2011-03-24 64 views
0

我正在使用listBox.ItemsSource = e.Result.Persons,這是一個人的集合。當我希望它顯示每個人物對象的名字時,列表框顯示實際的對象名稱。我怎樣才能做到這一點?Silverlight listbox question

回答

1

使用Listboxes ItemTemplate。 這樣的事情。

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

除了由其他響應綁定特定的方法,如下所示,你可以簡單地將其綁定:

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

我不喜歡實現所請求的功能的很多方式,因爲它將用FirstName內容替換列表框中Person實例的每個出現。例如,你可能不希望這種行爲的SelectedItem屬性.. – Eilistraee 2011-03-24 19:36:49

+0

我同意,但如果列表框真正與源數據斷開,你的價值是你想提取的值這是一個選項。綁定方式當然是最好的方式,但是這個選項演示了爲了滿足您的需要而過濾掉匿名類型的能力。 – 2011-03-24 19:44:29

+0

大討論傢伙,我很感激。 – Sean 2011-03-25 13:36:51

0

或者使用專用"DisplayMemberPath" property,你很容易想沒有任何這到底是什麼副作用(也沒有額外的標記):

<ListBox DisplayMemberPath="FirstName" /> 

對於更復雜的項目表示,使用模板(見下文)。

0

您可以覆蓋Persons對象的ToString()方法,以便它顯示此人的名字。