Согласно C# 3.0 вкратце , это - одна из нескольких ситуаций, где он должен хорошо звонить, Приостанавливают/Возобновляют.
К сожалению, невозможно автоматически применить один и тот же фильтр ко всем узлам. Фильтр - это свойство (не DP) ItemsCollection, которое не является DependencyObject, и поэтому наследования DP Value не существует.
Каждый узел в дереве имеет свою собственную коллекцию ItemsCollection, которая имеет свой собственный фильтр. Единственный способ заставить его работать - вручную настроить их всех для вызова одного и того же делегата.
Самый простой способ - предоставить свойство Filter типа Predicate
Неприятно, и я не уверен, какой будет производительность для большого количества элементов в дереве.
Я нашел единственный способ сделать это (что немного похоже на взлом) - это создать ValueConverter, который преобразует IList в IEnumerable. в ConvertTo () верните новый CollectionViewSource из переданного в IList.
Если есть лучший способ сделать это, я бы хотел его услышать. Хотя, похоже, это работает.