WPF listview显示转换器

时间:2011-07-06 16:00:36

标签: wpf listview itemscontrol

我有一个派生自Person类的对象集合,我希望将此集合绑定到ListView的ItemsSource。

我想指定要在ListView Items中显示的字符串。此字符串将是派生类中找到的属性的组合。

我还想在我的视图模型中将ListView的SelectedItem绑定到Person类型的属性。

据我所知,我需要一个字符串转换器来显示我的显示字符串,但我不确定如何绑定到ItemsSource中的项目以生成复合显示字符串。

任何人都可以给我指针吗?

感谢。

3 个答案:

答案 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>