UpAndDownTileAnimation.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 UpAndDownTileAnimation : ITileAnimation
  7. {
  8. /// <summary>
  9. /// Get Up and Down Storyboard
  10. /// </summary>
  11. public Storyboard GetStoryboard(Tile tile)
  12. {
  13. var storyboard = new Storyboard();
  14. var animDuration = new Duration(TimeSpan.FromMilliseconds(1000d));
  15. var offset = tile.BorderThickness.Top + tile.BorderThickness.Bottom;
  16. var start = 0d;
  17. var end = tile.ActualHeight - offset;
  18. if (tile.IsFrontSide)
  19. {
  20. tile.BackContentPresenter.Visibility = Visibility.Visible;
  21. storyboard.AddToStoryboard(start, -end, animDuration,
  22. tile.FrontContentPresenter,
  23. "(UIElement.Projection).(PlaneProjection.GlobalOffsetY)");
  24. storyboard.AddToStoryboard(end, start, animDuration,
  25. tile.BackContentPresenter,
  26. "(UIElement.Projection).(PlaneProjection.GlobalOffsetY)");
  27. storyboard.Completed += (sender1, o1) =>
  28. {
  29. tile.FrontContentPresenter.Visibility = Visibility.Collapsed;
  30. tile.IsFrontSide = false;
  31. };
  32. }
  33. else
  34. {
  35. tile.FrontContentPresenter.Visibility = Visibility.Visible;
  36. storyboard.AddToStoryboard(-end, start, animDuration,
  37. tile.FrontContentPresenter,
  38. "(UIElement.Projection).(PlaneProjection.GlobalOffsetY)");
  39. storyboard.AddToStoryboard(start, end, animDuration,
  40. tile.BackContentPresenter,
  41. "(UIElement.Projection).(PlaneProjection.GlobalOffsetY)");
  42. storyboard.Completed += (sender1, o1) =>
  43. {
  44. tile.BackContentPresenter.Visibility = Visibility.Collapsed;
  45. tile.IsFrontSide = true;
  46. };
  47. }
  48. return storyboard;
  49. }
  50. }
  51. }