У меня есть ScrollViewer, у которого есть источник предметов. Количество элементов в этом может исчисляться десятками тысяч и передаваться с веб-сервера. Мы уже устанавливаем эти два свойства:
VirtualizingStackPanel.VirtualizationMode="Recycling" ScrollViewer.IsDeferredScrollingEnabled="True"
Они прекрасно работают для перемещения большого пальца (кнопка в середине полосы прокрутки), но когда пользователь удерживает нажатой стрелку вниз или щелкает и удерживает нажатой клавишу DecreaseRepeatButton или IncreaseRepeatButton (невидимые кнопки над и под большой палец), отложенная прокрутка больше не соблюдается, а элементы прокручиваются в поле зрения и просматривают ресурсы сервера.
То, что я хотел бы сделать, это в два раза:
1) Используйте отложенную прокрутку для стрелок вниз / вверх. В отсутствие этого мы можем увеличить задержку кнопки повтора, чтобы удерживать кнопку не прокручивать непрерывно.
2) Обновите LargeChange кнопки поворота / уменьшения / увеличения, чтобы пользователь каждый раз прокручивал 10%.
Я уже пытался спуститься вниз по визуальному дереву для "PART_VerticalScrollBar" и установить LargeChange для System.Windows.Controls.Primitives.ScrollBar безрезультатно.
Я могу подключиться к свойству полосы прокрутки, и положение большого пальца обновляется, но затем я больше не могу перетаскивать большой палец.
Любая помощь будет принята с благодарностью.