Filtro de disparo en CollectionViewSource
Estoy trabajando en una aplicación de escritorio WPF usando el patrón MVVM.
Estoy tratando de filtrar algunos elementos de unaListView
basado en el texto escrito en unaTextBox
. Quiero elListView
elementos a filtrar a medida que cambio el texto.
Quiero saber cómo activar el filtro cuando cambia el texto del filtro.
LosListView
se une a unaCollectionViewSource
, que se une a laObservableCollection
en mi ViewModel. LosTextBox
para el texto del filtro se une a una cadena en ViewModel, conUpdateSourceTrigger=PropertyChanged
, como debería ser
<CollectionViewSource x:Key="ProjectsCollection"
Source="{Binding Path=AllProjects}"
Filter="CollectionViewSource_Filter" />
<TextBox Text="{Binding Path=FilterText, UpdateSourceTrigger=PropertyChanged}" />
<ListView DataContext="{StaticResource ProjectsCollection}"
ItemsSource="{Binding}" />
LosFilter="CollectionViewSource_Filter"
se vincula a un controlador de eventos en el código que se encuentra detrás, que simplemente llama a un método de filtro en ViewModel.
Filtering se realiza cuando cambia el valor de FilterText: el configurador de la propiedad FilterText llama a un método FilterList que itera sobre laObservableCollection
en mi ViewModel y establece unboolean
Propiedad FilteredOut en cada elemento ViewModel.
Sé que la propiedad FilteredOut se actualiza cuando cambia el texto del filtro, pero la Lista no se actualiza. LosCollectionViewSource
l evento @ filter solo se activa cuando vuelvo a cargar el UserControl al desconectarlo y volverlo a activar.
He intentado llamar aOnPropertyChanged("AllProjects")
después de actualizar la información del filtro, pero no resolvió mi problema. ("AllProjects" es laObservableCollection
propiedad en mi ViewModel a la que laCollectionViewSource
se une.)
¿Cómo puedo obtener elCollectionViewSource
para volver a filtrar cuando el valor de FilterTextTextBox
cambios?
Muchas gracia