Допустим есть ScrollViewer. А может экспандер. Да что угодно, что может скрыть элемент управления. Как мне определить, что элемент отображен в данный момент на экране и видим для пользователя?
Если это невозможно, то я кратко опишу задачу, к которой я пока нашел лишь одно решение.
Есть TreeView. Я загружаю в него данные. Много данных. Данные считываются из базы данных по 50 строк. Когда к дереву добавляется последний итем из этих 50, я хочу подписаться на событие, которое случится при отображении этого элемента на экране.
Я сначала думал задействовать события прокрутки, но не факт, что нужный мне элемент будет в конце списка, у элементов дерева ведь есть потомки. И их тоже нужно прогружать постепенно
Вообще, в WPF с виртуализацией данных всё довольно печально. Из-за её отсутствия и расплодилось такое количество сторонних гридов. Но тем не менее, можно подписаться на события ItemContainerGenerator-а, который отвечает за визуальную виртуализацию, и подгружать данные во время появления контейнера строк на экране.