элемент файла XAML, и вы привязываете непосредственно к ключу ресурса, привязка работает отлично. Единственное, что я могу догадаться, это то, что когда вы делаете это полностью в XAML, он знает, что вы действительно хотите связать со значением CollectionViewSource.View, и связывает его для вас за кулисами (как полезно!: /).
отаю над настольным приложением WPF, используя шаблон MVVM.
Я пытаюсь отфильтровать некоторые элементы изListView
на основе текста, набранного вTextBox
, Я хочуListView
элементы, которые будут отфильтрованы при изменении текста.
Я хочу знать, как запустить фильтр при изменении текста фильтра.
ListView
привязывается кCollectionViewSource
, который связывает сObservableCollection
на моей ViewModel.TextBox
для фильтра текста привязывается к строке в ViewModel, сUpdateSourceTrigger=PropertyChanged
, так, как это должно быть.
<CollectionViewSource x:Key="ProjectsCollection"
Source="{Binding Path=AllProjects}"
Filter="CollectionViewSource_Filter" />
<TextBox Text="{Binding Path=FilterText, UpdateSourceTrigger=PropertyChanged}" />
<ListView DataContext="{StaticResource ProjectsCollection}"
ItemsSource="{Binding}" />
Filter="CollectionViewSource_Filter"
ссылки на обработчик событий в коде, который просто вызывает метод фильтра во ViewModel.
Фильтрация выполняется при изменении значения FilterText - установщик свойства FilterText вызывает метод FilterList, который выполняет итерацию поObservableCollection
в моей ViewModel и устанавливаетboolean
Свойство FilteredOut для каждого элемента ViewModel.
Я знаю, что свойство FilteredOut обновляется при изменении текста фильтра, но список не обновляется.CollectionViewSource
Событие фильтра срабатывает только тогда, когда я перезагружаю UserControl, переключаясь с него и обратно.
Я пробовал звонитьOnPropertyChanged("AllProjects")
после обновления информации фильтра, но это не решило мою проблему. ("AllProjects" являетсяObservableCollection
свойство на моей ViewModel, к которойCollectionViewSource
связывает.)
Как я могу получитьCollectionViewSource
перефильтровать себя, когда значение FilterTextTextBox
изменения?
Большое спасибо