MVVM: CollectionView в ViewModel или CollectionViewSource в xaml?
Я разрабатываю приложение WPF с использованием шаблона MVVM, и мне нужно отобразить список элементов в ListView (с фильтрацией), с полями выбранного элемента, отображаемого в представлении "Мастер/Деталь". Я разорван между двумя следующими способами:
- Предоставление CollectionView в моей модели ViewModel и привязка к этому.
- Предоставление простого IList в моей модели ViewModel и использование CollectionViewSource для создания CollectionView в XAML.
Есть ли приемлемый способ сделать это? Любые мысли о лучшем виде?
Ответы
Ответ 1
Я делаю первые (выставляю CollectionView
из виртуальной машины), но важно то, где ваша логика фильтрации. Это определенно должно быть в виртуальной машине, чтобы ее можно было протестировать, даже если представление должно подключить CollectionViewSource
к виртуальной машине. Тем не менее, я не думаю, что есть что-то особенно неприятное или анти-MVVM об экспонировании CollectionView с вашей виртуальной машины.
Ответ 2
Я знаю, что немного опоздал, отвечая на ваш вопрос, но я только что видел его сегодня.
Я создал мастер-модели/подробные модели просмотра, которые используют CollectionViewSource и сообщают об этом.
Я написал о viewmodel для таблиц master/detail здесь, где используется:
http://reyntjes.blogspot.com/2009/04/master-detail-viewmodel_24.html
Вы также можете найти viewmodel для класса observablecollection на моих страницах блога.
Может быть, вы сочтете это полезным для вас.