Я пытаюсь создать расширенную версию WinForms DataGridView (ElementDataGrid), чтобы разрешить сортировку и фильтрацию. Поскольку это будет виджет, используемый несколькими разработчиками, я хочу скрыть класс SortableBindingList внутри и передать пользователю обычный список с элементом управления, создающим SortableBindingList.
Я создал базовый класс под названием Element, который могут быть расширены другими разработчиками, но когда я устанавливаю DataPropertyName столбца на свойство, которого нет в Element, в этом столбце ничего не отображается. В качестве примера у меня есть класс комментария, наследуемый от Element. Я хочу отобразить дату комментария и текст комментария в таблице данных. Ни в одном из этих столбцов нет данных, но столбцы, использующие свойства, унаследованные от Element, отображаются правильно.
Есть ли простой способ получить значения свойств отображения сетки из классов, унаследованных от базового класса Element? В качестве альтернативы, можно ли сделать так, чтобы свойство использовало общий список?
ОБНОВЛЕНИЕ: вот метод, который я использую, чтобы установить источник данных для моего SortableBindingList. Как я уже сказал, свойства из Element заполняются в сетке, когда я хочу их показать, а свойства из Comment, которые наследуются от Element, - нет.
public List<Element> DataElements
{
set
{
bindingDataSource.Clear();
SortableBindingList<Element> boundDataSource = new SortableBindingList<Element>();
bindingDataSource.DataSource = boundDataSource;
foreach (Element e in value)
{
bindingDataSource.Add(e);
}
this.DataSource = bindingDataSource;
}
}