public static Thickness SlidePosToThickness(SlidePositions position, double offset) { Thickness result; switch (position) { case SlidePositions.Left: result = new Thickness(-offset, 0, offset, 0); break; case SlidePositions.Top: result = new Thickness(0, -offset, 0, offset); break; case SlidePositions.Right: // result = new Thickness(0, 0, -offset, 0); result = new Thickness(offset, 0, -offset, 0); break; case SlidePositions.Bottom: result = new Thickness(0, offset, 0, -offset); break; case SlidePositions.Center: default: result = new Thickness(0, 0, 0, 0); break; } return(result); }
private static double OffsetGenerator(SlidePositions pos, double offset) { if (pos == SlidePositions.Center) { return(0); } else { return(offset); } }
public static void AddSlide(this Storyboard storyboard, SlidePositions start, SlidePositions end, float seconds, double start_offset, double end_offset) { var animation = new ThicknessAnimation { Duration = new Duration(TimeSpan.FromSeconds(seconds)), From = SlidePosToThickness(start, start_offset), To = SlidePosToThickness(end, end_offset), DecelerationRatio = 0.9f }; Storyboard.SetTargetProperty(animation, new PropertyPath("Margin")); storyboard.Children.Add(animation); }
{/* * /// <summary> * /// Basics page slide in / out animation. * /// </summary> * /// <param name="page"></param> * /// <param name="seconds"></param> * /// <param name="slideIn"></param> * /// <returns></returns> * public static async Task PageBasicsStartEndAnimation(this Page page, float seconds, bool slideIn, bool verticaly) * { * var sb = new Storyboard(); * * if (verticaly) * sb.AddSlideVerticaly(seconds, page.WindowHeight, slideIn, true); * else * sb.AddSlideHorizontaly(seconds, page.WindowHeight, slideIn, true); * * sb.AddFadeEffect(slideIn, slideIn ? seconds : seconds/2); * * sb.Begin(page); * page.Visibility = Visibility.Visible; * * await Task.Delay((int)(seconds * 1000)); * }*/ public static async Task PageBasicsAnimation(this Page page, float seconds, SlidePositions start, SlidePositions end, bool fadeIn, double distance) { var sb = new Storyboard(); sb.AddSlide(start, end, seconds, OffsetGenerator(start, distance), OffsetGenerator(end, distance)); sb.AddFadeEffect(fadeIn, seconds); sb.Begin(page); page.Visibility = Visibility.Visible; await Task.Delay((int)(seconds * 1000)); }