2009-02-23 5 views
6

je ListBox en application WPF comme:Afficher les données d'objet personnalisé à ListBox WPF

<ListBox HorizontalAlignment="Left" Margin="16,37,0,16" Name="lbEmpList" Width="194" SelectionChanged="lbEmpList_SelectionChanged" FontSize="12" SelectionMode="Single"> 

</ListBox> 

J'ai trois boutons: Ajouter, supprimer et mettre à jour qui ajouter, supprimer et les éléments de mise à jour à la zone de liste. J'ajoute des éléments à la ListBox mes noms d'objet de classe personnalisée objEmployee. Cette classe personnalisée contient peu de propriétés: ID, nom, adresse.
Mais, quand j'ajoute l'objet à ListBox, il affiche les éléments que

<Namespace Name>.<Custom Object name> 

Comment puis-je contraindra la propriété d'objet à ce ListBox à la conception ou de l'exécution de acheive ma fonctionnalité?

Répondre

24

Couple d'options:

La première, option la plus facile est de définir une propriété de votre objet personnalisé propriété DisplayMemberPath de la zone de liste. Donc, si votre classe d'employés a une propriété LastName, vous pouvez le faire:

<ListBox DisplayMemberPath="LastName" ... /> 

Si vous voulez plus de contrôle sur les données affichées pour chaque élément (y compris la mise en page personnalisée, etc.), vous aurez envie de définir un DataTemplate pour chaque élément de votre ListBox. La meilleure façon de le faire est simplement en réglant ItemTemplate propriété de la zone de liste:

<ListBox ...> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{Binding FirstName}" /> 
       <TextBlock Text="{Binding LastName}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

avoir une lecture à travers les liens que j'ai fourni et vérifier certains du code exemple sur MSDN.