CarouselPage.xaml.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using Avalonia.Animation;
  3. using Avalonia.Controls;
  4. using Avalonia.Markup.Xaml;
  5. namespace ControlCatalog.Pages
  6. {
  7. public class CarouselPage : UserControl
  8. {
  9. private Carousel _carousel;
  10. private Button _left;
  11. private Button _right;
  12. private ComboBox _transition;
  13. private ComboBox _orientation;
  14. public CarouselPage()
  15. {
  16. this.InitializeComponent();
  17. _left.Click += (s, e) => _carousel.Previous();
  18. _right.Click += (s, e) => _carousel.Next();
  19. _transition.SelectionChanged += TransitionChanged;
  20. _orientation.SelectionChanged += TransitionChanged;
  21. }
  22. private void InitializeComponent()
  23. {
  24. AvaloniaXamlLoader.Load(this);
  25. _carousel = this.FindControl<Carousel>("carousel");
  26. _left = this.FindControl<Button>("left");
  27. _right = this.FindControl<Button>("right");
  28. _transition = this.FindControl<ComboBox>("transition");
  29. _orientation = this.FindControl<ComboBox>("orientation");
  30. }
  31. private void TransitionChanged(object sender, SelectionChangedEventArgs e)
  32. {
  33. switch (_transition.SelectedIndex)
  34. {
  35. case 0:
  36. _carousel.PageTransition = null;
  37. break;
  38. case 1:
  39. _carousel.PageTransition = new PageSlide(TimeSpan.FromSeconds(0.25), _orientation.SelectedIndex == 0 ? PageSlide.SlideAxis.Horizontal : PageSlide.SlideAxis.Vertical);
  40. break;
  41. case 2:
  42. _carousel.PageTransition = new CrossFade(TimeSpan.FromSeconds(0.25));
  43. break;
  44. case 3:
  45. _carousel.PageTransition = new Rotate3DTransition(TimeSpan.FromSeconds(0.5), _orientation.SelectedIndex == 0 ? PageSlide.SlideAxis.Horizontal : PageSlide.SlideAxis.Vertical);
  46. break;
  47. }
  48. }
  49. }
  50. }