У меня есть ListView, который может содержать много элементов, поэтому это virtualized и элементы утилизации. Он не использует сортировку. Мне нужно обновить отображение значений, но когда слишком много элементов, слишком медленно обновлять все, поэтому я хотел бы обновить только видимые элементы.
Как я могу получить список всех отображаемых в данный момент элементов? Я попытался заглянуть в ListView или в ScrollViewer, но я до сих пор не знаю, как это сделать. Решение не должно проходить через все элементы, чтобы проверить, можно ли их увидеть, потому что это будет слишком медленно.
Я не уверен, что код или xaml будут полезны, это всего лишь virtualized/Recycling ListView с его ItemSource привязанным к Array.
Изменить:
Ответ:
спасибо akjoshi, я нашел способ:
-
получить
ScrollViewerListView(с помощью методаFindDescendant, который вы можете сделать с помощьюVisualTreeHelper). -
прочитайте его
ScrollViewer.VerticalOffset: это номер первого показанного элемента - прочитайте его
ScrollViewer.ViewportHeight: это количество показанных предметов.
Rq:CanContentScrollдолжен быть правдой.