我理解wpf支持DataGrids和Listboxes的自动更新(即添加新项目和删除删除的项目)的方式是使用ObservableCollection实现的INotifyCollectionChanged
接口。但出于某些原因,我似乎已成功绑定到EntityFramework中的EntityCollection<T>
,而这似乎并未实现INotifyCollectionChanged
。 WPF还有其他方式吗?
我想知道这是如何运作的。
修改
这里是答案的相关部分。简短的形式是它只是工作&#34;使用WPF和WinForms绑定。
EntityCollection目前没有 实现INotifyCollectionChanged, 这是“新”标准接口 用于通知集合更改。 但是,您可以使用绑定列表 获取EntityCollection(和 数据绑定通常会得到 当你传递和EntityCollection时 作为数据源)是IBindingList 它有自己的“旧”标准方式 通知收集更改 (即ListChanged事件)。在 一般来说,WinForms和WPF数据绑定 知道如何处理这个界面。
答案 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识别所有更新。