如何使实体框架和observablecollection类型独立的Collectionviewsource

时间:2012-01-31 10:21:02

标签: c# wpf entity-framework observablecollection collectionviewsource

我有几段代码,我希望这些代码可以独立于类型。

上下文: 我从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;。但保持在数据网格中自动生成列的能力。

0 个答案:

没有答案