Я использую новый PagedCollectionView в качестве моего ItemsSource.
Я привязал CollectionView к DataGrid, и мне нужна сетка, чтобы показывать только значения, которые проходят мой фильтр следующим образом:
var oc = new ObservableCollection<User>();
var pc = new PagedCollectionView(oc);
dataGrid.ItemsSource = pc;
Где класс User реализует INotifyPropertyChanged. Я применяю фильтр так:
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
pc.Filter += Include;
}
private bool Include(object obj)
{
return (obj as User).Name == filterText.Text;
}
И это работает. Проблема в том, что если я обновляю пользователя, результат фильтра не обновляется. Если очистить и повторно применить фильтр, он работает.
Конечно, я могу вызвать метод Refresh () в PagedCollectionView, но я подумал, что это можно сделать без обновления представления вручную.
Мне нужен механизм «живой фильтрации». Любая идея о том, как кодировать?
Сценарий: приложение для просмотра сигналов тревоги в системе. Скажем, пользователь выбрал для просмотра только строки с ошибкой или предупреждением в column0 (это мой фильтр). Когда column0 в строке изменяется с «Info» на «Warning», эта строка должна автоматически отображаться (она проходит через фильтр), и я не вызываю Refresh ().
Спасибо, Ларси