ScrollViewer 的 ScrollToVerticalOffset 值未在 ScrollViewer.VerticalOffset 属性 中更新

ScrollViewer's ScrollToVerticalOffset value is not updated in ScrollViewer.VerticalOffset property

我参考了下面的论坛

https://social.msdn.microsoft.com/Forums/en-US/1885dcfa-af48-47ee-85d7-bb9809e24f38/scrollviewerscrolltoverticaloffset-not-working-in-windows-8?forum=winappswithcsharp

通过调用ScrollViewer.UpdateLayout()方法,我们可以设置scrollviewer的垂直位置。我可以看到垂直偏移值在 UI with/without 调用 ScrollViewer.UpdateLayout() 中发生了变化。但是当我尝试从 ScrollViewer.VerticalOffset 中获取值时,它不会改变。

ScrollViewer.ScrollToVerticalOffset(1905);

// ScrollViewer.UpdateLayout();

还有其他更新方式吗ScrollViewer.VerticalOffset?

ScrollViewer 设置垂直/水平偏移的推荐方法是使用 ChangeView() 方法。下面是使用方法

scrollViewer.ChangeView(scrollViewer.HorizontalOffset, 500, scrollViewer.ZoomFactor);

您可以在 ViewChanged 事件中获取更改后的 VerticalOffsetHorizontalOffset 属性。例如

private void scrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
    double verticalOffset = scrollViewer.VerticalOffset;
}