2

在编写 WPF 应用程序时,有很多集合可供选择,我不确定在存储数据时要使用哪些集合。ObservableCollection如果我使用s 并实施,似乎一切都可以正常工作INotifyPropertyChanged

在我的视图模型中使用集合时,我应该问自己哪些问题?特别是,我应该什么时候使用这些集合?:

ObservableCollection

List<ClassA>

IList

CollectionView

ICollectionView

IEnumerable

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

并通过它IEnumerable,但我怎么知道哪个是正确的集合?这一切都基于我使用的控件吗?

4

3 回答 3

10

ObservableCollection当您希望 GUI 在添加或删除项目时更新时使用。AnObservableCollection是一个ICollectionChanged自动实现的列表。

List否则使用。

CollectionView当您想要应用排序、分组、过滤,也就是更复杂的操作时使用。

于 2013-07-11T18:29:23.313 回答
2

我的大部分收藏都使用 IEnumerable。

根据需要向上工作,即:

  • IEnumerable:重量最轻,功能最少,但适用于大多数情况。

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

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

于 2013-07-11T18:56:40.180 回答
2

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

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

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

于 2013-07-11T18:28:53.257 回答