LeftAnimationTile.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using Windows.UI.Xaml;
  3. using Windows.UI.Xaml.Media.Animation;
  4. namespace FormulaOneApp.Classic.Windows.Controls.Tile.Animations
  5. {
  6. public class LeftAnimationTile : ITileAnimation
  7. {
  8. public Storyboard GetStoryboard(Tile tile)
  9. {
  10. var storyboard = new Storyboard();
  11. var animDuration = new Duration(TimeSpan.FromMilliseconds(1000d));
  12. var offset = tile.BorderThickness.Right + tile.BorderThickness.Left;
  13. var end = tile.ActualWidth - offset;
  14. var start = 0d;
  15. if (tile.IsFrontSide)
  16. {
  17. storyboard.AddToStoryboard(-end, start, animDuration,
  18. tile.BackContentPresenter,
  19. "(UIElement.Projection).(PlaneProjection.GlobalOffsetX)");
  20. storyboard.AddToStoryboard(start, end, animDuration,
  21. tile.FrontContentPresenter,
  22. "(UIElement.Projection).(PlaneProjection.GlobalOffsetX)");
  23. storyboard.Completed += (sender1, o1) =>
  24. {
  25. tile.IsFrontSide = false;
  26. };
  27. }
  28. else
  29. {
  30. storyboard.AddToStoryboard(-end, start, animDuration,
  31. tile.FrontContentPresenter,
  32. "(UIElement.Projection).(PlaneProjection.GlobalOffsetX)");
  33. storyboard.AddToStoryboard(start, end, animDuration,
  34. tile.BackContentPresenter,
  35. "(UIElement.Projection).(PlaneProjection.GlobalOffsetX)");
  36. storyboard.Completed += (sender1, o1) =>
  37. {
  38. tile.IsFrontSide = true;
  39. };
  40. }
  41. return storyboard;
  42. }
  43. }
  44. }