2010-07-12 10 views
1

Je veux créer une listbox dynamiquement [codebehind C#]. Sa source de données est l'objet de classe.Comment créer une Listbox dynamiquement wpf

class sample 
{ 
    string filepath; 
    string id; 
    string trackName; 
} 

besoins:

  1. Affichage comme nom de la piste élément listbox dans la liste [dynamique].

code:

sample samp=GetBL.GetValue(); 
ListBox lbTrack = new ListBox(); 
StackPanel sp = new StackPanel(); 
lbTrack.ItemSource = samp; 

Gita.

Répondre

2

Créez une classe qui expose une ObservableCollection<sample> en tant que propriété nommée, par exemple, Samples. Créez une instance de cette classe, remplissez sa collection et ajoutez la classe au dictionnaire de ressources de la fenêtre, avec une clé de, disons Data. Remplacez ToString() dans la classe sample pour qu'il renvoie ce que vous voulez afficher dans le ListBox.

faites ceci:

<ListBox ItemsSource="{StaticResource Data, Path=Samples}"/> 

sans écraser ToString(), vous pouvez spécifier un affichage de liaison:

<ListBox ItemSource="{StaticResource Data, Path=Samples}" 
     DisplayMemberBinding="{Binding Path=trackName"/> 

Notez que trackName doit être une propriété, pas un champ.

Vous remarquerez que je ne crée pas par programmation des contrôles WPF, et que j'utilise à la place la liaison de données pour le faire pour moi. C'est un concept essentiel et fondamental du développement d'applications WPF.