2009-06-11 37 views
36

我正在开发一个使用MVVM模式的WPF应用程序,我需要在一个ListView(带过滤)中显示一个项目列表,所选项目的字段显示在主/细节视图中。我在以下两种方式之间撕裂:MVVM:CollectionView在ViewModel或CollectionViewSource中的xaml?

  1. 在我的ViewModel中暴露一个CollectionView,并绑定到这个。
  2. 在我的ViewModel中暴露一个普通的IList,并使用CollectionViewSource在XAML中创建CollectionView。

有没有一种可以接受的方法呢?任何想法的最佳途径?

+1

令人惊讶的是,很多次你发现有人已经做了完全相同的问题,你会问。谢谢! :) – 2013-07-12 08:08:24

回答

30

我做前者(从VM中暴露CollectionView),但真正重要的是你的过滤逻辑在哪里。即使视图必须将CollectionViewSource连接到虚拟机,也应该在虚拟机中进行测试。也就是说,我不认为有任何关于从虚拟机中暴露CollectionView的特别讨厌或反MVVM。

+0

你只是在ViewModel中创建一个新的CollectionView? CollectionView的MSDN说你不应该创建一个新的CollectionView,而是创建一个CollectionViewSource并获得默认视图。什么是创建CollectionView的最佳方式? – 2009-06-22 05:04:52

3

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

我已经创建了使用CollectionViewSource并对其进行博客的主/明细视图模型。

我写了关于主/明细表一个ViewModel这里使用: http://reyntjes.blogspot.com/2009/04/master-detail-viewmodel_24.html

您也可以找到我的博客页面的ObservableCollection类视图模型。

也许你觉得它对你有用。

相关问题