MVVM:ViewModel中的CollectionView或xaml中的CollectionViewSource?

时间:2009-06-11 04:28:43

标签: wpf collections mvvm

我正在使用MVVM模式开发WPF应用程序,我需要在ListView中显示项目列表(带过滤),所选项目的字段显示在主/明细视图中。我在以下两种方式之间徘徊:

  1. 在我的ViewModel中公开CollectionView,并绑定到此。
  2. 在我的ViewModel中公开普通的IList,并使用CollectionViewSource在XAML中创建CollectionView。
  3. 有可接受的方法吗?有关最佳方式的任何想法吗?

2 个答案:

答案 0 :(得分:31)

我做前者(从VM公开CollectionView),但真正重要的是你的过滤逻辑在哪里。这肯定应该在VM中,以便可以对其进行测试,即使视图必须将CollectionViewSource连接到VM。也就是说,我认为从VM中暴露CollectionView没有任何特别讨厌或反MVVM的东西。

答案 1 :(得分:3)

我知道我回答你的问题有点迟,但我今天才看到它。

我创建了使用CollectionViewSource并在博客上发布的主/详细视图模型。

我在这里写了一个关于master / detail表的viewmodel,它使用: http://reyntjes.blogspot.com/2009/04/master-detail-viewmodel_24.html

您还可以在我的博客页面上找到observablecollection类的viewmodel。

也许你觉得它对你有用。