我有一个派生自Person类的对象集合,我希望将此集合绑定到ListView的ItemsSource。
我想指定要在ListView Items中显示的字符串。此字符串将是派生类中找到的属性的组合。
我还想在我的视图模型中将ListView的SelectedItem绑定到Person类型的属性。
据我所知,我需要一个字符串转换器来显示我的显示字符串,但我不确定如何绑定到ItemsSource中的项目以生成复合显示字符串。
任何人都可以给我指针吗?
感谢。
答案 0 :(得分:1)
您可以覆盖派生类的ToString()
方法以返回复合显示字符串,也可以像建议的那样创建Converter
并将整个项目传递给它。然后,转换器将检查该项是否为指定类型,如果是,则组成一个您想要的任何属性的字符串。
答案 1 :(得分:1)
你不需要StringConverter,你需要DataTemplate
使用DataTemplate,您可以选择将数据显示为listBox中的项目的方式。
答案 2 :(得分:1)
如果您可以将您的派生类视为ViewModel,那么您只需向该类添加一个属性,然后将其显示在ListView ItemTemplate中。或者像Rachel建议覆盖你的ToString方法然后在你的显示绑定中简单地写"{Binding}"
这将迫使WPF调用ToString
方法
e.g。
public class DerivedPerson : Person
{
public string DisplayString
{
get
{
return string.Format("{0} {1}",FirstName,LastName);
}
}
}
你xaml:
<ListView ItemsSource="{Binding PersonList}" SelectedItem="{Binding SelectedPerson}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text={Binding DisplayString}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>