2011-03-24 2 views
0

J'utilise listBox.ItemsSource = e.Result.Persons, qui est une collection de personnes. La zone de liste affiche les noms réels des objets lorsque je souhaite qu'ils affichent le prénom de chaque objet personnel. Comment puis-je faire ceci?Silverlight listbox question

Répondre

1

utiliser Listboxes ItemTemplate. quelque chose comme ça.

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

En plus de la méthode de liaison est spécifiée par l'autre réponse, vous pouvez simplement lier comme suit:

listBox.ItemsSource = e.Result.Persons.Select(d => new { FirstName }); 
+0

Je n'aime pas beaucoup de cette manière d'atteindre la fonctionnalité demandée, car il remplacera chaque occurrence des instances de personne dans le ListBox par le contenu FirstName. Par exemple, vous ne voulez probablement pas ce comportement pour la propriété SelectedItem. – Eilistraee

+0

Je suis d'accord, mais si la Listbox est vraiment déconnectée des données source et que votre valeur est la valeur que vous souhaitez extraire c'est une option. L'approche de liaison est bien sûr la meilleure solution, mais cette option permet de filtrer les types anonymes afin de répondre à vos besoins. –

+0

Grande discussion les gars, je l'apprécie. – Sean

0

Ou utilisez le "DisplayMemberPath" property dédié, qui vous exactement ce que vous voulez facilement sans effets secondaires (ni balisage supplémentaire):

<ListBox DisplayMemberPath="FirstName" /> 

Pour les représentations d'objets plus complexes, utilisent des modèles (voir ci-dessous).

0

Vous pouvez remplacer la méthode ToString() de l'objet Persons afin qu'il affiche le prénom de la personne.