绑定WPF的DataGrid直接到EntityCollection

问题描述:

我明白WPF的方式支持DataGrid中和列表框(即增加新的项目和删除删除的)的自动更新与INotifyCollectionChanged接口的ObservableCollection工具。但由于某些原因,我似乎完全成功地绑定了来自EntityFramework的EntityCollection<T>,这似乎并未实现INotifyCollectionChanged。有没有其他方式WPF是这样做的?绑定WPF的DataGrid直接到EntityCollection <T>

我只是想知道这是怎么工作的。

编辑

下面是答案的相关部分。简而言之,它与WPF和WinForms绑定“一起工作”。

EntityCollection目前不 实现INotifyCollectionChanged, 这是通知集合更改“新”标准接口 。 但是,您可以 获得EntityCollection绑定列表(和 其数据绑定通常会得到 当你通过和EntityCollection 作为数据源)是一个IBindingList的 其中有通知了自己的“老”的标准方式 收集更改 (即ListChanged事件)。通常,WinForms和WPF数据绑定 知道如何处理这个接口。

显然这里有一个bug filed,但它被封为“按设计”(至少不适用于.NET 4)。

As this post解释说,EntityCollection有效地使用了“旧”或WinForms方式的列表更改通知,它使用IBindingList。而WPF使用“新”INotifyCollectionChanged接口。

这个blog post解释了一个很好的方式来包装EntityCollection与自定义ListCollectionView,你可以分配给ItemsSource属性。

+0

您的链接给我的答案,但你引用了错误的一部分! :)尽管如此。谢谢。 – 2011-04-08 00:29:34

+0

从“这个帖子”迭戈乙维加上面链接,“绑定列表,你可以获取EntityCollection (和数据绑定当你通过和EntityCollection 作为数据源通常会获得)是一个IBindingList的...的EntityCollection 其绑定列表总是同步的两个增删” – Kimberly 2011-04-08 00:29:40

+0

@Kimberly,是啊,感谢两种方式 - 我已经更新了我与回答问题。谢谢! – 2011-04-08 00:31:04

你可能有一个看EntityObservableCollection可以在的WPF Application Framework (WAF)BookLibrary示例应用程序中找到。这一个确保WPF绑定识别所有更新。