如何确定在WPF中使用哪个集合

时间:2013-07-11 18:14:42

标签: c# wpf collections

在编写WPF应用程序时,可以选择集合的所有可能性,我不确定在存储数据时要使用哪些集合。如果我使用ObservableCollection并实施INotifyPropertyChanged

,似乎一切都可行

在我的View Models中使用集合时,我应该问自己有哪些问题?特别是,我什么时候应该使用这些收藏品? :

ObservableCollection

List<ClassA>

IList

CollectionView

ICollectionView

IEnumerable

以及您可能想要列出的任何其他内容。

并传递IEnumerable,但我怎么知道哪个是正确的集合?这完全基于我正在使用的控件吗?

3 个答案:

答案 0 :(得分:10)

如果希望在添加或删除项目时更新GUI,请使用ObservableCollectionObservableCollection是自动实施ICollectionChanged的列表。

否则使用List

当您想要应用排序,分组,过滤以及更复杂的操作时,请使用CollectionView

答案 1 :(得分:2)

如果您希望将集合作为Source的控件在添加/移动/删除/替换集合的项目时自行更新,那么您必须使用ObservableCollection并绑定控件的ItemsSource(例如)那个系列。

如果您使用List<T>,绑定控件将不会收到任何更新通知。

这与更新每个项目的内容不同。无论(我相信),只有当项目对象实现INotifyPropertyChanged时,才会更新您使用的每个项目内容的集合类型。

答案 2 :(得分:2)

我在大多数收藏中使用IEnumerable。

根据需要继续努力,即:

  • IEnumerable:它是重量最轻,功能最少的,但在大多数情况下都是完美的。

  • 列表:包含IEnumerable的所有功能,并添加了通过添加,删除等编辑集合的功能。

  • ObservableCollection:包含上述内容并已实现INotifyPropertyChanged。这使得它非常适合更新已添加和删除项目的集合的UI。