【问题标题】:C#/WPF - Get ScrollViewer scroll position?C#/WPF - 获取 ScrollViewer 滚动位置?
【发布时间】:2012-10-31 05:10:43
【问题描述】:

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

【问题讨论】:

  • 阅读 MSDN、VerticalOffsetContentVerticalOffset 应该会给您正确的值...您在什么时候访问这些属性(当它们评估为 0 时)?

标签: c# wpf


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-31
        • 1970-01-01
        • 1970-01-01
        • 2012-08-21
        相关资源
        最近更新 更多