Search code examples
windows-store-appswin-universal-appscrollviewer

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


I have referred the below forum

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

By invoking ScrollViewer.UpdateLayout() method, we can set the position of scrollviewer in vertical. I can see vertical offset value is changed in UI with/without invoking ScrollViewer.UpdateLayout(). But when i try to get the value from ScrollViewer.VerticalOffset which doesn't gets changed.

ScrollViewer.ScrollToVerticalOffset(1905);

// ScrollViewer.UpdateLayout();

Any other way to update this ScrollViewer.VerticalOffset?


Solution

  • Recommended way to set vertical / horizontal offset for a ScrollViewer is to use ChangeView() method. Here's how to use it

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

    You can get the changed VerticalOffset or HorizontalOffset properties in ViewChanged event. E.g.

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