2011-03-24 14 views
0

私はlistBox.ItemsSource = e.Result.Personsを使用しています。これは人の集合です。リストボックスには、それぞれの人物オブジェクトのファーストネームを表示したいときに実際のオブジェクト名が表示されます。これどうやってするの?Silverlightリストボックスの質問

答えて

1

リストボックスItemTemplateを使用します。 このようなもの

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

副作用(追加のマークアップもありません):

<ListBox DisplayMemberPath="FirstName" /> 

さらに複雑な項目の表現については、テンプレート(下記参照)を使用してください。

+0

私はListBoxのPersonインスタンスのすべてのインスタンスをFirstNameコンテンツで置き換えるため、要求された機能を実現するのはあまり好きではありません。たとえば、SelectedItemプロパティのこの動作を望まないでしょう。 – Eilistraee

+0

私は同意しますが、リストボックスが本当にソースデータから切り離されていて、あなたの値がこれを抽出する値である場合、これはオプションです。バインディングのアプローチはもちろん最善の方法ですが、このオプションは、ニーズを満たすために匿名型にフィルタする機能を示しています。 –

+0

素晴らしい議論の人、私はそれを感謝します。 – Sean

0

それとも、どんなことなく容易にしたいですか正確に何の専用"DisplayMemberPath" propertyを、使用を次のように他の応答で指定されたバインディング、あなたは、単にそれを結合することができる方法に加えて

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

PersonsオブジェクトのToString()メソッドをオーバーライドして、人物のファーストネームを表示することができます。

関連する問題