Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF:数据绑定中使用的集合的正确基类是什么?_Wpf_Data Binding_Binding_Inotifypropertychanged - Fatal编程技术网

WPF:数据绑定中使用的集合的正确基类是什么?

WPF:数据绑定中使用的集合的正确基类是什么?,wpf,data-binding,binding,inotifypropertychanged,Wpf,Data Binding,Binding,Inotifypropertychanged,我正在使用强类型集合类(例如,CustomerCollection)构建一个对象模型。我希望在集合本身和集合中的所有数据模型上都支持完整的双向绑定 对于模型来说,实现INotifyPropertyChanged似乎是连接模型的正确方法。但是我应该使用什么样的inferface/基类,以便WPF知道我的集合的内容何时更改?-专门为WPF绑定而设计。我建议键入您公开为IList或IEnumerable(泛型或非泛型,由您选择)的属性,而不是ObservableCollection,因为它将您绑定到该

我正在使用强类型集合类(例如,
CustomerCollection
)构建一个对象模型。我希望在集合本身和集合中的所有数据模型上都支持完整的双向绑定


对于模型来说,实现
INotifyPropertyChanged
似乎是连接模型的正确方法。但是我应该使用什么样的inferface/基类,以便WPF知道我的集合的内容何时更改?

-专门为WPF绑定而设计。

我建议键入您公开为IList或IEnumerable(泛型或非泛型,由您选择)的属性,而不是ObservableCollection,因为它将您绑定到该实现中,在很多情况下,这会变得很烦人


您需要集合实现的特定接口是INotifyCollectionChanged。

虽然这是事实,但不应该依赖它。它有一些回缩,使它有时会变得粗糙。如果您将其用于需要在其他位置使用的OM,则WindowsBase.dll上添加的依赖项很烦人。ObservableCollection(加上INotifyCollectionChanged和ReadOnlyObservableCollection)已被类型转发到System.dll for.Net 4:-)我将属性公开为具体集合(例如CustomerCollection),而不仅仅是接口。这意味着我可以随时更改基类,只需重新编译。