24

好了,至此,大家都知道如何设置ScrollViewer的滚动位置了。整篇文章和博客文章都是关于ScrollViewer.ScrollToVerticalOffset()的,这里有几百个关于它的问题的答案。

所以,我输入:

myScrollViewer.ScrollToVerticalOffset(280);

...它非常友好地滚动到那个位置。

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

(提示:myScrollViewer.VerticalOffsetandContentVerticalOffset都是 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。

4

3 回答 3

26

解决方法是手动调用myScrollViewer.UpdateLayout()after myScrollViewer.ScrollToVerticalOffset()。那么,myScrollViewer.VerticalOffset就会有期望值了。

于 2012-11-04T05:58:33.693 回答
4

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

于 2012-10-31T06:00:39.240 回答
0

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

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

于 2012-10-31T06:14:56.817 回答