2015-10-11 61 views
2

我为ScrollViewer设置了一个ScrollChangedEventHandler,如下面的代码所示。ScrollViewer本身和ScrollChangedEventArgs的verticall偏移量之间的区别是什么

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个VerticalOffset会产生不同的值。 你能告诉我ScrollViewer本身和ScrollChangedEventArgs的垂直偏移量之间的实际差异是什么?

回答

3

如从MSDN文档的结论为那些两个属性:

ScrollViewer.VerticalOffset:表示的ScrollViewer垂直的原始值偏移(你做滚动之前,意味着垂直的前偏移事件被触发)

e.VerticalOffset:代表ScrollViewer中的垂直的新(更新值的偏移量(你做滚动后,意味着垂直的价值抵销后事件被触发)

所以你可以比较两个值:
ScrollViewer.VerticalOffset旧的,滚动完成前的原始值。
e.VerticalOffset新滚动完成后更新的值。

在通常情况下,您将使用e.VerticalOffset属性。请注意:HorizontalOffset属性也适用。

这里是Resource 1Resource2

+1

非常感谢您的盛情答案。 – user4134476

相关问题