2011-01-19 4 views
1

Вот моя настройка. У меня есть следующие классы BusinessObjectСвязывание с DataGrid Тип выпуска

BaseClass 
InheritClassA : BaseClass 
InheritClassB : BaseClass 
InheritClassC : BaseClass 

У меня также есть следующий словарь

Dictionary<classType is a String, ObservableCollection<BaseClass>> 

Я хочу, чтобы иметь возможность, на мой конвертер, база по типу объекта я выбираю, вернуть правильное ObservableCollection поэтому я могу привязать его к моему datagrid и autoGenerateColumn, чтобы я мог просматривать все свои свойства в сетке.

Однако, когда я просто возвращаю свою коллекцию в качестве BaseClass, она отображает только столбцы для базового класса. Я думаю, это потому, что Тип для ObservableCollection является типом baseClass и не специфичен для InheritClassA/InheritClassB/InheritClassC

Есть ли способ динамического создания типа ObservableCollection? Таким образом, я могу создать ObservableCollection и присвоить ему литые значения?

Есть ли способ привязать его к моему datagrid, чтобы я мог просматривать свойства класса inherit?

Большое спасибо,

ответ

1

Создать словарь, который имеет как значение типа Object, а не BaseClass. Затем вы можете добавить бетон ObservableCollection<InheritClass[A,B,C]> и связывание будет работать, как вы ожидаете:

Dictionary<classType is a String, ObservableCollection<object>> 

Если вы хотите быть более строгими, объявим его как Dictionary<string,IEnumerable>