WPF GridView,Display DisplayType()。DisplayMemberBinding中的名称

时间:2009-11-09 20:55:20

标签: wpf data-binding reflection gridview

我希望从我的GridView中包含我的集合中每个对象的Type名称。我有一个集合,它有四种不同的类型,都来自基类。打电话给他们,Foo,Bar,Fizz和Buzz。

我想分别阅读该列,Foo,Bar,Fizz或Buzz。下面是我正在使用的Binding,但它不起作用。

到目前为止,我有这个。

GridViewColumn colC = new GridViewColumn()
{
Header = "Type",
Width = 100,
DisplayMemberBinding = New Binding("listName.GetType().Name")
}

如果我使用名为TypeName的String属性为我调用GetType().Name,它确实有用。

有什么想法吗?我能正确解释一下吗?

1 个答案:

答案 0 :(得分:2)

您无法使用绑定调用方法。您必须使用包装器属性(根据您的TypeName解决方案)或转换器,例如

public class TypeNameConverter : IValueConverter
{
  public object Convert(object value, ...)
  {
    return value.GetType().Name;  // omitting error handling
  }
}

DisplayMemberBinding = new Binding("listName") { Converter = new TypeNameConverter() };

转换器方法显然具有不需要您修改模型的好处。