Estoy implementando una aplicación wpf que muestra una lista de elementos y proporciona la funcionalidad para filtrar esta lista escribiendo en un cuadro de texto (caso de uso bastante trivial, creo).MVP/MVVM - Filtrado de listas, ¿quién tiene la responsabilidad?
Estamos utilizando una estructura MVVM.
Mi pregunta es, ¿de quién es la responsabilidad de filtrar la lista? La vista o el modelo de vista? Debería implementar un evento "OnTextChanged" en xaml.cs, o debería usar una propiedad en ViewModel y usar PropertyChanged para filtrar la lista.
La siguiente pregunta es, ¿debo usar una BindingList/ObservableCollection en el ViewModel, o usar un ICollectionView para vincular ItemsControl a?
Intenté ambos métodos, y ambos funcionan. Darle la responsabilidad a ViewModel mantiene el código detrás de la Vista vacía, pero por otro lado no estoy completamente convencido de que sea responsabilidad de ViewModels aplicar filtros (por ejemplo: diferentes vistas pueden requerir diferentes filtros)
Cualquier idea ?
gracias, Roel
EDIT:
lo que me molesta de ponerlo en el modelo de vista es que (en mi aplicación actual) hay una referencia al System.Windows.Data. Esta es una referencia que preferiría no tener en ViewModel porque es claramente algo relacionado con View. ¿O me estoy perdiendo algo? código relevante:
ICollectionView customerView = CollectionViewSource.GetDefaultView(customers);
Esta es una buena pregunta, especialmente sobre ViewModel que requiere una referencia a 'System.Windows.Data'. – pauldoo