В чем разница между вертикальным смещением самого 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
имущество.