WPF treeview вносит в поле зрения, используя зависания MVVM

I have a wpf treeview control that uses virtualization owing to the size of my datasets. The hierachy is Customer -> Account -> Transaction with an example dataset of 150 customers, most of which just have one account and transaction, but four have 8000 transactions.

Мне нужно иметь функцию поиска, чтобы ввести идентификатор транзакции и перейти к этому месту в древовидном представлении. В настоящее время я использую модель MVVM, поэтому поиск транзакции тривиален, и когда у меня есть узел ViewModel, я могу просто вызвать SelectThis (), и он отлично работает. Но проблема заключается в том, что выбранный узел не попадает в область просмотра.

У меня есть функция, которая принимает объект ViewModel и пересекает TreeView до тех пор, пока не найдет TreeViewItem, который содержит ViewModel, он создает контейнер и затем вызывает BringIntoView() в TreeViewItem.

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

Я действительно не понимаю, что делает wpf за кулисами, но я предполагаю, что мой код что-то делает с созданием контейнеров, которые накапливаются и заканчиваются сбой кода, поскольку их слишком много. Когда я разбиваю все в отладчике, он, как представляется, постоянно переходит в aroudn и aroudn, восстанавливая связанные свойства зависимостей для каждого объекта Transaction, поэтому не уверен, почему он пытается получить так много из них, когда в видимой области всего 30, это похоже, пытается найти все.

Есть ли способ между вызовами «Поиск транзакции», чтобы я мог очистить все созданные контейнеры и объекты пользовательского интерфейса от элемента управления TreeView и сбросить его на разгрузку, чтобы каждый поиск начинался с нуля с целью создания контейнеров?

благодаря

0
nl ja de

1 ответы

Вы можете использовать ICollectionView для выполнения поиска в древовидной структуре, привязывая представление ItemsView TreeView к коллекции, как показано ниже.

 ICollectionView defaultView = CollectionViewSource.GetDefaultView(treeView.ItemsSource);
 defaultView.Filter += delegate(object item)
 {
    string searchString = searchTextBox.Text;
 }

Link for further help

One more Reference

0
добавлено
Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda

Чат — Типичный Верстальщик
Чат — Типичный Верстальщик
1 080 участник(ов)

Основной канал: @tpverstak Обратная связь: @annblok Все ссылки на соц.сети проекта: http://taplink.cc/tpverstak ПРАВИЛА ЧАТА — https://teletype.in/@annblok/BygPgC3E7

Веб-Технологи: UI/UX, Вёрстка, Фронтенд
Веб-Технологи: UI/UX, Вёрстка, Фронтенд
167 участник(ов)

Всё про веб-дизайн и вёрстку. А также: HTML, CSS, флекс и бутстрапы, шаблонизаторы, препроцессоры, методологии, аглифаеры, улучшаторы и обфускаторы. Обсуждаем темы юзабилити, устраиваем А/В тесты лендингов, и проводим аудит.

DTP :: @DTPublish
DTP :: @DTPublish
147 участник(ов)

Обсуждаемые темы: полиграфия, препресс, верстка, дизайн, иллюстрации, скрипты, плагины. Канал - @DTPublishing