我有几段代码,我希望这些代码可以独立于类型。
上下文: 我从mssql数据库中获得了几(8)个表生成的edmx文件。 在这些实体上使用linq我希望获得一个可观察的集合,我可以将其用作CollectionViewSource的源,而CollectionViewSource又绑定到datagrid。申请一些过滤等。
问题: 我得到的问题是当我想要绑定/过滤/添加行/删除行的代码独立于我从哪个表生成我的集合时。截至目前,如果我在代码中的许多地方使用switchcases,我只能找到一个可行的解决方案。我宁愿不赞成重用能力。问题: 我该怎么做,我需要改变什么,我该怎么做。简而言之,我如何摆脱开关箱?
代码snippit:
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部分更改为更动态的部分但不是问题所在。它的可观察集合及其强制类型...... :(
修改:CONT:
我尝试使用ObservableCollection <object
&gt;但是我的DataGrid只显示了一堆小的水平线。因为它不再知道它必须显示什么类型的物品。有没有办法在另一个变量中指出(通过datatemplate?)到数据网格,以便自动生成的列再次工作。
编辑2:
简而言之。替换ObservableConnection <tblWoning
&gt;我需要做什么?使用ObservableConnection <object
&gt;或ObservableConnection <dynamic
&gt;。但保持在数据网格中自动生成列的能力。