WPF GridView, Показать GetType (). Имя в DisplayMemberBinding - PullRequest
0 голосов
/ 09 ноября 2009

Я хочу включить имя типа каждого объекта в мою коллекцию из моего GridView. У меня есть коллекция, в которой есть четыре разных типа, все они происходят от базового класса. Позвоните им, Фу, Бар, Физз и Базз.

Я хочу, чтобы этот столбец читался, Foo, Bar, Fizz или Buzz, соответственно. Ниже я использую привязку, однако она не работает.

Пока у меня есть это.

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

Это работает, если я использую свойство String с именем TypeName, которое для меня называется GetType().Name.

Есть идеи? Я правильно объясняю?

1 Ответ

2 голосов
/ 10 ноября 2009

Вы не можете вызвать метод, использующий привязку. Вы должны либо использовать свойство оболочки (согласно вашему решению TypeName), либо конвертер, например,

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

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

Конвертерный подход, очевидно, имеет то преимущество, что он не требует изменения вашей модели.

...