在编写WPF应用程序时,可以选择集合的所有可能性,我不确定在存储数据时要使用哪些集合。如果我使用ObservableCollection
并实施INotifyPropertyChanged
。
在我的View Models中使用集合时,我应该问自己有哪些问题?特别是,我什么时候应该使用这些收藏品? :
ObservableCollection
List<ClassA>
IList
CollectionView
ICollectionView
IEnumerable
以及您可能想要列出的任何其他内容。
并传递IEnumerable
,但我怎么知道哪个是正确的集合?这完全基于我正在使用的控件吗?
答案 0 :(得分:10)
如果希望在添加或删除项目时更新GUI,请使用ObservableCollection
。 ObservableCollection
是自动实施ICollectionChanged
的列表。
否则使用List
。
当您想要应用排序,分组,过滤以及更复杂的操作时,请使用CollectionView
。
答案 1 :(得分:2)
如果您希望将集合作为Source的控件在添加/移动/删除/替换集合的项目时自行更新,那么您必须使用ObservableCollection
并绑定控件的ItemsSource(例如)那个系列。
如果您使用List<T>
,绑定控件将不会收到任何更新通知。
这与更新每个项目的内容不同。无论(我相信),只有当项目对象实现INotifyPropertyChanged
时,才会更新您使用的每个项目内容的集合类型。
答案 2 :(得分:2)
我在大多数收藏中使用IEnumerable。
根据需要继续努力,即:
IEnumerable:它是重量最轻,功能最少的,但在大多数情况下都是完美的。
列表:包含IEnumerable的所有功能,并添加了通过添加,删除等编辑集合的功能。
ObservableCollection:包含上述内容并已实现INotifyPropertyChanged。这使得它非常适合更新已添加和删除项目的集合的UI。