MVVM: CollectionView in ViewModel or CollectionVie

2019-03-08 23:37发布

I'm developing a WPF application using the MVVM pattern and I need to display a list of items in a ListView (with filtering), with the fields of the selected item displayed in a Master/Detail view. I'm torn between the following two ways of doing this:

  1. Exposing a CollectionView in my ViewModel, and binding to this.
  2. Exposing a plain IList in my ViewModel, and using CollectionViewSource to create the CollectionView in XAML.

Is there an accepted way of doing this? Any thoughts on the best way?

2条回答
Anthone
2楼-- · 2019-03-09 00:18

I do the former (expose CollectionView from the VM) but what really matters is where your filtering logic is. That should definitely be in the VM so that it can be tested, even if the view has to wire up the CollectionViewSource to the VM. That said, I don't think there's anything particularly nasty or anti-MVVM about exposing a CollectionView from your VM.

查看更多
贪生不怕死
3楼-- · 2019-03-09 00:31

I know I'm a bit late answering your question but I just saw it today.

I have created master/detail viewmodels that use the CollectionViewSource and blogged about it.

I wrote about a viewmodel for master/detail tables here that uses : http://reyntjes.blogspot.com/2009/04/master-detail-viewmodel_24.html

You can also find a viewmodel for the observablecollection class on my blog pages.

Maybe you find it of use to you.

查看更多
登录 后发表回答