2010-09-29 3 views
2

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

Приветствие,
Berryl

EDIT: Я вижу, что документы говорят: «Если ваш объект вида приходит из объекта CollectionViewSource, вы применяете фильтрацию логики, установив обработчик для события Filter.» хотя ничто не мешает вам установить свойство в представлении, и он не говорит, зачем это делать.

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

+0

Вы могли бы нашли ответ здесь: http://bea.stollnitz.com/blog/?p=31 Я рекомендую вам прочитать ее другие сообщения о CollectionView :) – Bruno

ответ

0

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

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

viewsource.Filter += viewsource_Filter;

Тогда:

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

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

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

viewsource.view.Filter = null;