WPF GridView,在DisplayMemberBinding中显示GetType()

WPF GridView,在DisplayMemberBinding中显示GetType(),wpf,data-binding,reflection,gridview,Wpf,Data Binding,Reflection,Gridview,我希望从GridView中包含集合中每个对象的类型名称。我有一个集合,其中有四种不同的类型,它们都派生自一个基类。给他们打电话,Foo,Bar,Fizz和Buzz 我想让那个专栏分别读,Foo,Bar,Fizz或Buzz。下面是我正在使用的绑定,但是它不起作用 到目前为止,我有这个 GridViewColumn colC = new GridViewColumn() { Header = "Type", Width = 100, DisplayMemberBinding = New Bindin

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

我想让那个专栏分别读,Foo,Bar,Fizz或Buzz。下面是我正在使用的绑定,但是它不起作用

到目前为止,我有这个

GridViewColumn colC = new GridViewColumn()
{
Header = "Type",
Width = 100,
DisplayMemberBinding = New Binding("listName.GetType().Name")
}
如果我使用一个名为TypeName的字符串属性,该属性为我调用了
GetType().Name
,它确实可以工作


有什么想法吗?我的解释正确吗?

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

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

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

转换器方法显然有一个好处,即它不需要您修改模型。

@itowlson,是的,您是对的,我正在实现MVVM。