public static void SlideAndFade(FrameworkElement control, SlideAnimationMode mode, double from, double to) { if (mode == SlideAnimationMode.None) { return; } control.Visibility = Visibility.Hidden; var slideAnimation = CreateSlideAnimation( control.ActualWidth, control.ActualHeight, mode, TimeSpan); var fadeAnimation = CreateFadeAnimation(from, to, TimeSpan); var sb = new Storyboard(); sb.Children.Add(slideAnimation); sb.Children.Add(fadeAnimation); sb.Begin(control); if (to == 0) { control.Visibility = Visibility.Collapsed; } else { control.Visibility = Visibility.Visible; } }
private static void GetThicknessAnimateValue( double controlWidth, double controlHeight, SlideAnimationMode mode, out Thickness firstThickness, out Thickness lastThickness) { switch (mode) { case SlideAnimationMode.LeftToRight: firstThickness = new Thickness(-controlWidth, 0, controlWidth, 0); break; case SlideAnimationMode.RightToLeft: firstThickness = new Thickness(controlWidth, 0, -controlWidth, 0); break; case SlideAnimationMode.TopToBottom: firstThickness = new Thickness(0, -controlHeight, 0, controlHeight); break; case SlideAnimationMode.BottomToTop: firstThickness = new Thickness(0, controlHeight, 0, -controlHeight); break; default: firstThickness = new Thickness(0); break; } lastThickness = new Thickness(0); }
public static void Slide(FrameworkElement control, SlideAnimationMode mode) { if (mode == SlideAnimationMode.None) { return; } var slideAnimation = CreateSlideAnimation( control.ActualWidth, control.ActualHeight, mode, TimeSpan); var sb = new Storyboard(); sb.Children.Add(slideAnimation); sb.Begin(control); }
/// <summary> /// Provides slide effect /// </summary> /// <param name="controlWidth">The width of the control applying the animation</param> /// <param name="animationMode">The animation mode of sliding</param> /// /// <param name="decelerationRatio">The ratio of timespan spent to decelerate</param> /// <returns>The animation</returns> public static ThicknessAnimation CreateSlideAnimation( double controlWidth, double controlHeight, SlideAnimationMode animationMode, double seconds, double decelerationRatio = 0.9f) { GetThicknessAnimateValue(controlWidth, controlHeight, animationMode, out Thickness from, out Thickness to); var slideAnimation = new ThicknessAnimation { From = from, To = to, Duration = new Duration(System.TimeSpan.FromSeconds(seconds)), DecelerationRatio = decelerationRatio }; Storyboard.SetTargetProperty(slideAnimation, new PropertyPath("Margin")); return(slideAnimation); }
public static async Task SlideAndFadeAsync(FrameworkElement control, SlideAnimationMode mode, double from, double to) { SlideAndFade(control, mode, from, to); }
/// <summary> /// Perform the animation on control in asynchorous mode /// </summary> /// <param name="control"></param> /// <param name="mode"></param> /// <returns></returns> public static async Task SlideAsync(FrameworkElement control, SlideAnimationMode mode) { Slide(control, mode); }