Filtro de gatilho no CollectionViewSource
Estou trabalhando em um aplicativo de desktop WPF usando o padrão MVV
Estou tentando filtrar alguns itens de umListView
com base no texto digitado emTextBox
. Eu quero oListView
itens a serem filtrados à medida que altero o text
Quero saber como acionar o filtro quando o texto do filtro for alterad
OListView
liga-se a umCollectionViewSource
, que se liga aoObservableCollection
no meu ViewModel. OTextBox
para o texto do filtro vincula a uma sequência no ViewModel, comUpdateSourceTrigger=PropertyChanged
, como deveria 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}" />
OFilter="CollectionViewSource_Filter"
vincula a um manipulador de eventos no código por trás, que simplesmente chama um método de filtro no ViewMode
Filtering é feito quando o valor de FilterText é alterado - o configurador da propriedade FilterText chama um método FilterList que itera sobre oObservableCollection
no meu ViewModel e define umboolean
Propriedade FilteredOut em cada item ViewModel.
Sei que a propriedade FilteredOut é atualizada quando o texto do filtro é alterado, mas a Lista não é atualizada. OCollectionViewSource
o evento de filtro é acionado apenas quando recarrego o UserControl, afastando-o e retornand
Tentei ligar paraOnPropertyChanged("AllProjects")
depois de atualizar as informações do filtro, mas isso não resolveu o meu problema. ("AllProjects" é oObservableCollection
no meu ViewModel ao qual oCollectionViewSource
liga.)
Como posso obter oCollectionViewSource
para refiltrar-se quando o valor do FilterTextTextBox
alterar
Muito Obrigad