В чем разница между вертикальным смещением самого ScrollViewer и ScrollChangedEventArgs

Я установил ScrollChangedEventHandler для ScrollViewer, как показано в коде ниже.

private void scrollViewer_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
    var scrollViewer = sender as ScrollViewer;
    if (scrollViewer == null) 
        return; 

    Console.WriteLine(scrollViewer.VerticalOffset); 
    Console.WriteLine(e.VerticalOffset);
}

Иногда 2 VerticalOffsets приводят к различным значениям. Не могли бы вы сказать мне, какова фактическая разница между смещением вертикали самого ScrollViewer и ScrollChangedEventArgs?

1 ответ

Решение

Как вывод из документации MSDN для этих двух свойств:

ScrollViewer.VerticalOffset: представляет исходное значение вертикального смещения ScrollViewer (перед прокруткой подразумевается вертикальное смещение до запуска события)

e.VerticalOffset: представляет новое (обновленное значение вертикального смещения ScrollViewer (после выполнения прокрутки означает значение вертикального смещения после запуска события)

Таким образом, вы можете сравнить два значения:
ScrollViewer.VerticalOffset старое, оригинальное значение до завершения прокрутки.
e.VerticalOffset новое, обновленное значение после прокрутки.

В общем случае вы будете использовать e.VerticalOffset имущество.

ПРИМЕЧАНИЕ: то же самое относится к HorizontalOffset имущество.

вот Ресурс 1 и Ресурс2

Другие вопросы по тегам