我正在使用MVVM模式开发WPF应用程序,我需要在ListView中显示项目列表(带过滤),所选项目的字段显示在主/明细视图中 . 我在以下两种方式之间徘徊:
在我的ViewModel中公开CollectionView,并绑定到此 .
在我的ViewModel中公开一个普通的IList,并使用CollectionViewSource在XAML中创建CollectionView .
这是否有可接受的方式?有关最佳方式的任何想法?
我做前者(从VM公开 CollectionView ),但真正重要的是你的过滤逻辑 . 这肯定应该在VM中,以便可以对其进行测试,即使视图必须将 CollectionViewSource 连接到VM . 也就是说,我不会讨论从VM中暴露CollectionView的任何特别讨厌或反MVVM的事情 .
CollectionView
CollectionViewSource
我知道我回答你的问题有点迟,但我今天才看到它 .
我创建了使用CollectionViewSource并在博客上发布的主/详细视图模型 .
我在这里写了一个关于master / detail表的viewmodel,它使用:http://reyntjes.blogspot.com/2009/04/master-detail-viewmodel_24.html
您还可以在我的博客页面上找到observablecollection类的视图模型 .
也许你觉得它对你有用 .
2 回答
我做前者(从VM公开
CollectionView
),但真正重要的是你的过滤逻辑 . 这肯定应该在VM中,以便可以对其进行测试,即使视图必须将CollectionViewSource
连接到VM . 也就是说,我不会讨论从VM中暴露CollectionView的任何特别讨厌或反MVVM的事情 .我知道我回答你的问题有点迟,但我今天才看到它 .
我创建了使用CollectionViewSource并在博客上发布的主/详细视图模型 .
我在这里写了一个关于master / detail表的viewmodel,它使用:http://reyntjes.blogspot.com/2009/04/master-detail-viewmodel_24.html
您还可以在我的博客页面上找到observablecollection类的视图模型 .
也许你觉得它对你有用 .