Виртуализация стаппанель и высота

Если у меня внутри виртуальной прокрутки есть панель виртуализации, то как мой прокручиватель узнает, какой должна быть высота полосы прокрутки?

Например, если у меня есть 10000 элементов, как он узнает, что прокрутил только 5 процентов вниз по списку?

Что делать, если я не знаю размер предметов?

1 ответ

Решение

Это действительно хороший ресурс, внизу вы можете скачать пример проекта. Я думаю, что вы ищете в функциях GetFirstVisibleIndex и GetLastVisibleIndex. Я перечислил их ниже для удобства. По сути, у вас будет отслеживание смещения, насколько далеко находится "верх" вашего списка. это в сочетании с размером элементов поможет получить значения, которые вы ищете

 private int GetFirstVisibleIndex()
 {
    return (int)Math.Floor(_offset.Y / _itemSize.Height);
 }

 private int GetLastVisibleIndex()
 {
    return Math.Min((int)Math.Ceiling((_offset.Y + _viewport.Height) / _itemSize.Height) - 1, GetItemsCount() - 1);
 }
Другие вопросы по тегам