将WPF DataGrid直接绑定到EntityCollection <t> </t>

时间:2011-04-07 23:42:01

标签: c# wpf entity-framework entity-framework-4

我理解wpf支持DataGrids和Listboxes的自动更新(即添加新项目和删除删除的项目)的方式是使用ObservableCollection实现的INotifyCollectionChanged接口。但出于某些原因,我似乎已成功绑定到EntityFramework中的EntityCollection<T>,而这似乎并未实现INotifyCollectionChanged。 WPF还有其他方式吗?

我想知道这是如何运作的。

修改

这里是答案的相关部分。简短的形式是它只是工作&#34;使用WPF和WinForms绑定。

  

EntityCollection目前没有   实现INotifyCollectionChanged,   这是“新”标准接口   用于通知集合更改。   但是,您可以使用绑定列表   获取EntityCollection(和   数据绑定通常会得到   当你传递和EntityCollection时   作为数据源)是IBindingList   它有自己的“旧”标准方式   通知收集更改   (即ListChanged事件)。在   一般来说,WinForms和WPF数据绑定   知道如何处理这个界面。

2 个答案:

答案 0 :(得分:2)

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

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

这个blog post解释了使用自定义ListCollectionView包装EntityCollection的好方法,可以将其分配给ItemsSource属性。

答案 1 :(得分:2)

您可以查看 EntityObservableCollection ,它可以在 WPF Application Framework (WAF) BookLibrary 示例应用程序中找到。这个确保WPF Binding识别所有更新。