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

Gro*_*kys 38 collections wpf mvvm

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

  1. 在我的ViewModel中公开CollectionView,并绑定到它.
  2. 在我的ViewModel中公开一个普通的IList,并使用CollectionViewSource在XAML中创建CollectionView.

这是否有可接受的方式?有关最佳方式的任何想法?

Ken*_*art 32

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

  • +1.如果有人感兴趣的话,Microsoft PRISM的开发人员指南在第79页推荐了相同的方法. (2认同)