Я реализую приложение wpf, которое отображает список элементов, и предоставляет функции для фильтрации этого списка, введя текстовое поле (довольно тривиальный случай использования, я думаю).
Мы используем структуру MVVM.
Мой вопрос, чья ответственность заключается в том, чтобы отфильтровать список? Вид или viewmodel? Должен ли я реализовать событие OnTextChanged в xaml.cs или использовать свойство в ViewModel и использовать PropertyChanged для фильтрации списка. Последующий вопрос: должен ли я использовать BindingList/ObservableCollection в ViewModel или использовать ICollectionView для привязки ItemsControl к?
Я пробовал оба метода, и они оба работают. Предоставление ViewModel несет ответственность за сохранение кода из View, но, с другой стороны, я не полностью убежден, что ответственность за фильтрацию (например: разные представления могут потребовать различной фильтрации) - это ответственность ViewModels.
Любые мысли?
спасибо, Рул
EDIT:
Что меня беспокоит в том, чтобы поместить его в ViewModel, так это то, что (в моей текущей реализации) есть ссылка на System.Windows.Data. Это ссылка, которую я бы предпочел не иметь в ViewModel, потому что это явно что-то вроде View related. Или я чего-то не хватает? соответствующий код:
ICollectionView customerView = CollectionViewSource.GetDefaultView(customers);