@iRumba

Как определить что элемент в рабочей области?

Допустим есть ScrollViewer. А может экспандер. Да что угодно, что может скрыть элемент управления. Как мне определить, что элемент отображен в данный момент на экране и видим для пользователя?

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

Есть TreeView. Я загружаю в него данные. Много данных. Данные считываются из базы данных по 50 строк. Когда к дереву добавляется последний итем из этих 50, я хочу подписаться на событие, которое случится при отображении этого элемента на экране.
Я сначала думал задействовать события прокрутки, но не факт, что нужный мне элемент будет в конце списка, у элементов дерева ведь есть потомки. И их тоже нужно прогружать постепенно

Ничего другого в голову не приходит, к сожалению.
  • Вопрос задан
  • 167 просмотров
Пригласить эксперта
Ответы на вопрос 3
@velnick
Я подгрузку по прокрутке не делал, но кажется в winforms это называлось virtual mode.
Попробуйте посмотреть ссылки:
www.codeproject.com/Articles/42110/Virtual-Mode-Tr...
stackoverflow.com/questions/27508470/how-to-solve-...

Еще возможно стоит погуглить lazy loading и выбирать решение, которое вам подойдет.
Ответ написан
Комментировать
@Sumor
Поищите по ключевым словам treeview virtualization wpf
В MSDN есть специальная статья: Повышение производительности TreeView
Ответ написан
Комментировать
lam0x86
@lam0x86
Вообще, в WPF с виртуализацией данных всё довольно печально. Из-за её отсутствия и расплодилось такое количество сторонних гридов. Но тем не менее, можно подписаться на события ItemContainerGenerator-а, который отвечает за визуальную виртуализацию, и подгружать данные во время появления контейнера строк на экране.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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