У меня есть пара фрагментов кода, которые я бы хотел сделать независимыми от типов.
Контекст:
У меня есть файл edmx, сгенерированный из пары (8) таблиц из базы данных mssql.
Используя linq для этих объектов, я хочу получить наблюдаемую коллекцию, которую я могу использовать в качестве источника для CollectionViewSource, который, в свою очередь, связан с сеткой данных. применить некоторую фильтрацию и т.д ..
проблема:
Проблема, которую я получаю, состоит в том, когда я хочу, чтобы код для привязки / фильтрации / добавления строк / удаления строк не зависел от того, из какой таблицы я генерирую свою коллекцию. На данный момент я могу найти работоспособное решение, только если я использую коммутаторы в нескольких местах в моем коде. И я бы предпочел не в пользу способности повторного использования.
вопрос:
Что мне делать, что мне нужно изменить, что мне не хватает. короче как избавиться от распределительных шкафов?
фрагмент кода:
ent = new Access2SQLEntitiesCon();
CVS = (CollectionViewSource)this.Resources["CVS"];
///don't want this \/
switch (tbl_enum)
{
case 1:
var wnings = from woning in ent.tblWoning
where woning.volg == ProjNum
select woning;
var _oc = new ObservableCollection<tblWoning>(wnings);
_oc.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(OC_CollectionChanged);
CVS.Source = _oc;
break;
}
//don't want that /\
CVS.Filter += CVS_Filter;
MakeFilterListEFM();
Итак, я могу опубликовать две другие проблемные области, но я думаю, что это подойдет на данный момент. Я понял, что могу изменить часть linq на что-то более динамичное, но не в этом проблема. Это наблюдаемая коллекция и ее обязательный тип ...: (
редактирование: продолжение:
Я попытался бы использовать ObservableCollection <object
>, но тогда моя DataGrid просто отображает кучу маленьких горизонтальных линий. Потому что он больше не знает, какие типы предметов он должен отображать. Может быть, есть способ добавить это в другую переменную en, указав (через шаблон данных?) Сетку данных, чтобы автоматически сгенерированные столбцы снова заработали.
изменить 2:
Короче. Что мне нужно сделать, чтобы заменить ObservableConnection <tblWoning
> на ObservableConnection <object
> или ObservableConnection <dynamic
>. Но сохраняя возможность автогенерации столбцов в сетке данных.