/// <summary> /// Zooms to the specified factor using an animation instead of /// immediately jumping to that value as with ZoomToFactor(). /// </summary> /// <remarks> /// Note that calling ZoomToFactor() does not update ZoomFactor immediately, /// so it is important to wait for it to change before calling this method. /// </remarks> /// <param name="scrollViewer"></param> /// <param name="factor"></param> /// <param name="duration"></param> /// <param name="easingFunction"></param> /// <returns></returns> public static async Task ZoomToFactorWithAnimation( this ScrollViewer scrollViewer, double factor, TimeSpan duration, EasingFunctionBase easingFunction) { var handler = GetAnimatedScrollHandler(scrollViewer); if (handler == null) { handler = new ScrollViewerAnimatedScrollHandler(); SetAnimatedScrollHandler(scrollViewer, handler); } await handler.ZoomToFactorWithAnimationAsync( factor, duration, easingFunction); }
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.ScrollToVerticalOffsetWithAnimationAsync( offset, duration, easingFunction); }