Silverlight列表框问题

Silverlight列表框问题,silverlight,listbox,itemssource,Silverlight,Listbox,Itemssource,我使用的是listBox.ItemsSource=e.Result.Persons,它是一个Persons集合。当我希望列表框显示每个person对象的名字时,它会显示实际的对象名。如何执行此操作?使用列表框ItemTemplate。 像这样的 <ListBox> <ListBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding FirstName}"/> </ListBox.It

我使用的是
listBox.ItemsSource=e.Result.Persons
,它是一个Persons集合。当我希望列表框显示每个person对象的名字时,它会显示实际的对象名。如何执行此操作?

使用列表框ItemTemplate。 像这样的

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

除了由另一个响应指定的绑定方法外,您可以简单地按如下方式绑定它:

listBox.ItemsSource = e.Result.Persons.Select(d => new { FirstName });
或者使用专用的,完全按照您的要求轻松完成,没有任何副作用(也没有附加标记):



对于更复杂的项目表示,请使用模板(见下文)。

您可以覆盖Persons对象的ToString()方法,以便它显示此人的名字。

我不太喜欢通过这种方式实现所需的功能,因为它将用FirstName内容替换列表框中出现的每个Person实例。例如,您可能不希望SelectedItem属性出现这种行为。我同意,但如果Listbox确实与源数据断开连接,并且您的值是您希望提取的值,则这是一个选项。绑定方法当然是最好的方法,但是这个选项展示了过滤匿名类型的能力,以满足您的需要。非常好的讨论人员,我非常感谢。
<ListBox DisplayMemberPath="FirstName" />