【问题标题】:WPF GridView, Display GetType().Name in DisplayMemberBindingWPF GridView,在 DisplayMemberBinding 中显示 GetType().Name
【发布时间】:2009-11-09 20:55:20
【问题描述】:

我想在我的 GridView 的集合中包含每个对象的类型名称。我有一个集合,其中有四种不同的类型,它们都派生自一个基类。称他们为 Foo、Bar、Fizz 和 Buzz。

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

到目前为止,我有这个。

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

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

有什么想法吗?我解释得对吗?

【问题讨论】:

    标签: wpf data-binding reflection gridview


    【解决方案1】:

    您不能使用绑定调用方法。您必须使用包装器属性(根据您的 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。
    猜你喜欢
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多