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