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

时间:2012-10-31 05:10:44

标签: c# wpf

好的,所以,每个人都知道如何设置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。

3 个答案:

答案 0 :(得分:24)

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

答案 1 :(得分:4)

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

答案 2 :(得分:0)

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

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