/// <summary> /// Sets the AnimatedScrollHandler property. This dependency property /// indicates the handler object that handles animated scrolling of the ScrollViewer. /// </summary> public static void SetAnimatedScrollHandler(DependencyObject d, ScrollViewerAnimatedScrollHandler value) { d.SetValue(AnimatedScrollHandlerProperty, value); }
/// <summary> /// Scrolls to the specified offset using an animation instead of /// immediately jumping to that offset as with ScrollToVerticalOffset(). /// </summary> /// <remarks> /// Note that calling ScrollToVerticalOffset() does not update VerticalOffset immediately, /// so it is important to wait for it to change before calling this method. /// </remarks> /// <param name="scrollViewer"></param> /// <param name="offset"></param> /// <param name="duration"></param> /// <param name="easingFunction"></param> /// <returns></returns> public static async Task ScrollToVerticalOffsetWithAnimation( this ScrollViewer scrollViewer, double offset, TimeSpan duration, EasingFunctionBase easingFunction) { var handler = GetAnimatedScrollHandler(scrollViewer); if (handler == null) { handler = new ScrollViewerAnimatedScrollHandler(); SetAnimatedScrollHandler(scrollViewer, handler); } await handler.ScrollToVerticalOffsetWithAnimation( offset, duration, easingFunction); }