Событие фильтрации CollectionViewSource и свойство - PullRequest
2 голосов
/ 29 сентября 2010

Каковы некоторые практические различия между использованием свойства CollectionViewSource.View.Filter по сравнению с событием CollectionViewSource.Filter?Есть ли ситуации, когда вы будете использовать один над другим, или это вопрос предпочтений?

Cheers,
Berryl

РЕДАКТИРОВАТЬ: я вижу, что документы говорят "Если ваш взглядобъект происходит из объекта CollectionViewSource, вы применяете логику фильтрации, устанавливая обработчик событий для события Filter. "хотя ничто не мешает вам установить свойство в представлении, и оно не говорит, зачем это делать.

Преимущество, которое я нашел до сих пор в установке события в CollectionViewSource, состоит в том, что вы можете реализовать всесвою логику фильтрации в одном обработчике событий, а затем используйте View.Refresh (или View.DeferRefresh), чтобы вызвать его, когда пользователь изменяет критерии фильтрации.

1 Ответ

0 голосов
/ 05 ноября 2015

Установка события Filter в CollectionViewSource будет означать, что событие вызывается, даже если не требуется фильтрация, которая сделает процесс менее эффективным.

Официальный способ использования события Filterдобавив его при фильтрации и удалив позже, когда фильтр будет очищен.

viewsource.Filter += viewsource_Filter;

Тогда:

viewsource.Filter -= viewsource_Filter; // как узнать, сколько существует событий!?

Если вы используете событиенеобходимо убедиться, что вы не добавляете событие каждый раз, когда изменяется значение фильтра, потому что помимо наличия избыточных событий, скрывающихся вокруг (= приложение работает усерднее), вам придется удалить все события, чтобы очистить фильтр.

Таким образом, есть преимущество в использовании свойства Filter, потому что вы можете легче очистить фильтр, установив для свойства null.

viewsource.view.Filter = null;

...