【问题标题】:Using MVVM with CollectionViewSource将 MVVM 与 CollectionViewSource 一起使用
【发布时间】:2011-11-01 13:41:20
【问题描述】:

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

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

感谢任何帮助

【问题讨论】:

    标签: c# wpf data-binding mvvm collectionviewsource


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-10-24
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      • 2017-06-08
      • 2013-08-09
      相关资源
      最近更新 更多