Как отфильтровать wpf treeview иерархия с помощью ICollectionView?

Согласно C# 3.0 вкратце , это - одна из нескольких ситуаций, где он должен хорошо звонить, Приостанавливают/Возобновляют.

21
задан David 21 August 2009 в 17:48
поделиться

2 ответа

К сожалению, невозможно автоматически применить один и тот же фильтр ко всем узлам. Фильтр - это свойство (не DP) ItemsCollection, которое не является DependencyObject, и поэтому наследования DP Value не существует.

Каждый узел в дереве имеет свою собственную коллекцию ItemsCollection, которая имеет свой собственный фильтр. Единственный способ заставить его работать - вручную настроить их всех для вызова одного и того же делегата.

Самый простой способ - предоставить свойство Filter типа Predicate в вашем ToolBoxViewModel и в его установщике запустить событие. Тогда ToolboxItemViewModel будет отвечать за использование этого события и обновление его фильтра.

Неприятно, и я не уверен, какой будет производительность для большого количества элементов в дереве.

4
ответ дан 29 November 2019 в 22:02
поделиться

Я нашел единственный способ сделать это (что немного похоже на взлом) - это создать ValueConverter, который преобразует IList в IEnumerable. в ConvertTo () верните новый CollectionViewSource из переданного в IList.

Если есть лучший способ сделать это, я бы хотел его услышать. Хотя, похоже, это работает.

3
ответ дан 29 November 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: