Виртуализация стаппанель и высота
Если у меня внутри виртуальной прокрутки есть панель виртуализации, то как мой прокручиватель узнает, какой должна быть высота полосы прокрутки?
Например, если у меня есть 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);
}