C#/ WPF – 获取ScrollViewer滚动位置?

好的,所以,每个人都知道如何设置ScrollViewer的滚动位置。 整篇论文和博客文章都是关于ScrollViewer.ScrollToVerticalOffset()编写的,这里有几百个关于它的答案。

所以,我输入:

 myScrollViewer.ScrollToVerticalOffset(280); 

……它如此亲切地滚动到那个位置。

问题是, 什么属性现在包含280 ,所以我可以在以后检索它?

(提示: myScrollViewer.VerticalOffsetContentVerticalOffset都是0; myScrollViewer.ScrollInfo只是普通不存在。)

编辑:显然我需要更详细的演示。

 private void btnTest_Click(object sender, RoutedEventArgs e) { double scrollTarget = 280; MessageBox.Show("Target: " + scrollTarget.ToString()); myScrollViewer.ScrollToVerticalOffset(scrollTarget); MessageBox.Show("Now: " + myScrollViewer.VerticalOffset); } 

我必须重申,这确实按预期滚动 。 准确地向右移动到我想要的地方。 但是, myScrollViewer.VerticalOffset设置为0。

解决方案是在myScrollViewer.UpdateLayout()之后手动调用myScrollViewer.ScrollToVerticalOffset() 。 然后, myScrollViewer.VerticalOffset将具有预期值。

在触发LayoutUpdated事件后,确保您的VerticalScrollBarVisibility =“Visible”和VerticalScrollOffset将为280。

我想你是在窗口的构造函数中调用myscrollViewer。

单击按钮或窗口的加载方法时,可以调用它们,以便以垂直偏移值更新值。 也就是说,初始化窗口后,这些值会更新!