0

我正在尝试使用 CollectionViewSource 来显示一些数据,并且我看到的所有示例/教程都构建了一个自定义类,它们在另一个类中使用,该类继承自 ObservableCollection。我对使用 CollectionViewSource 都是新手,这只是我的第三个 MVVM 实现,所以我可能会误解编程模式,但我的问题是:我在哪里放置 ObservableCollection 类和/或自定义类?

我觉得他们应该进入模型,但是我不确定什么会绑定到视图。我是否只是将它们构建为外部类,然后在模型/视图模型中引用它们?

任何帮助表示赞赏

4

1 回答 1

5

首先,我会说没有必要继承,ObservableCollection<T>除非你向它添加我很少,如果有的话,实际上需要做的功能。

在大多数情况下,我创建 ViewModel 类型的属性,ObservableCollection<T>然后在加载数据时从模型中填充它们。这样做的好处是 Model 不需要使用ObservableCollection<T>(它可以是 any IEnumerable<T>),这意味着稍后当我(几乎不可避免地)想要将从 Model 返回的任何内容包装在另一个特定于实例的视图模型中时只需要更改我现有的视图模型类。

一旦你在你的视图模型上有一个属性,你可以简单地将你绑定CollectionViewSource到那个属性,它会从那里做所有事情。值得注意的是,CollectionViewSource它实际上并不关心属性的类型,因此您可以将您的集合作为一个ICollection<T>IEnumerable<T>或者(我相信)甚至作为一个公开给视图,object并且CollectionViewSource仍然会像公开一样对待它作为一个ObservableCollection<T>.

对不起,有点漫不经心的回答。简洁的版本是“视情况而定”,但在大多数情况下,我倾向于遵循这种通用方法。

于 2011-11-01T14:25:46.733 回答