RightTileAnimation.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 RightTileAnimation : 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(start, -end, animDuration,
  18. tile.FrontContentPresenter,
  19. "(UIElement.Projection).(PlaneProjection.GlobalOffsetX)");
  20. storyboard.AddToStoryboard(end, start, animDuration,
  21. tile.BackContentPresenter,
  22. "(UIElement.Projection).(PlaneProjection.GlobalOffsetX)");
  23. storyboard.Completed += (sender1, o1) =>
  24. {
  25. tile.FrontContentPresenter.Visibility = Visibility.Collapsed;
  26. tile.IsFrontSide = false;
  27. };
  28. }
  29. else
  30. {
  31. storyboard.AddToStoryboard(start, -end, animDuration,
  32. tile.BackContentPresenter,
  33. "(UIElement.Projection).(PlaneProjection.GlobalOffsetX)");
  34. storyboard.AddToStoryboard(end, start, animDuration,
  35. tile.FrontContentPresenter,
  36. "(UIElement.Projection).(PlaneProjection.GlobalOffsetX)");
  37. storyboard.Completed += (sender1, o1) =>
  38. {
  39. tile.BackContentPresenter.Visibility = Visibility.Collapsed;
  40. tile.IsFrontSide = true;
  41. };
  42. }
  43. return storyboard;
  44. }
  45. }
  46. }