Есть несколько частей для нетривиальной манипуляции с представлением, которое я пропустил, все они связаны с обновлением CollectionView, которое является свойством CollectionViewSource:
Первая часть моего вопроса была о том, когда установить фильтр. Для моего случая использования лучше всего оказалось зарегистрироваться для события CollectionViewSource.Filter, а затем использовать метод View.Refresh при каждом изменении фильтра. Первоначальная регистрация события фильтра также запускает обработчик событий, и многие из примеров msdn, которые вы видите, показывают это как способ фильтрации представления и ничего более. Но если ваш сценарий не тривиален, и пользователь может изменить некоторые критерии фильтрации, вам необходимо использовать один или несколько из перечисленных выше методов и свойств, связанных с обновлением.
Вторая часть моего вопроса была связана с тем, нужно ли вам отказаться от подписки на событие фильтра, и если да, то когда. Что ж, получается, что вам не нужно , чтобы отписаться от подписки, но если вы сделаете это, это эффективно очистит любую фильтрацию представления. И многие из тривиальных примеров msdn делают именно это, чтобы очистить фильтр, что, безусловно, нужно, если вы хотите полностью очистить фильтрацию, но для моего случая использования это было не то, что я действительно хотел. Я хотел очистить некоторые критерии, но не другие, и снова использование Refresh (в нужное время) дало мне желаемое поведение.
НТН,
Berryl