CarouselGesturesPage.xaml.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using Avalonia.Controls;
  2. using Avalonia.Input;
  3. using Avalonia.Interactivity;
  4. namespace ControlCatalog.Pages
  5. {
  6. public partial class CarouselGesturesPage : UserControl
  7. {
  8. private bool _keyboardEnabled = true;
  9. public CarouselGesturesPage()
  10. {
  11. InitializeComponent();
  12. DemoCarousel.AddHandler(InputElement.KeyDownEvent, OnKeyDown, handledEventsToo: true);
  13. DemoCarousel.SelectionChanged += OnSelectionChanged;
  14. DemoCarousel.Loaded += (_, _) => DemoCarousel.Focus();
  15. }
  16. private void OnKeyDown(object? sender, KeyEventArgs e)
  17. {
  18. if (!_keyboardEnabled)
  19. return;
  20. switch (e.Key)
  21. {
  22. case Key.Left:
  23. case Key.Up:
  24. LastActionText.Text = $"Action: Key {e.Key} (Previous)";
  25. break;
  26. case Key.Right:
  27. case Key.Down:
  28. LastActionText.Text = $"Action: Key {e.Key} (Next)";
  29. break;
  30. }
  31. }
  32. private void OnSelectionChanged(object? sender, SelectionChangedEventArgs e)
  33. {
  34. StatusText.Text = $"Item: {DemoCarousel.SelectedIndex + 1} / {DemoCarousel.ItemCount}";
  35. if (DemoCarousel.IsSwiping)
  36. LastActionText.Text = "Action: Swipe";
  37. }
  38. private void OnSwipeEnabledChanged(object? sender, RoutedEventArgs e)
  39. {
  40. DemoCarousel.IsSwipeEnabled = SwipeCheck.IsChecked == true;
  41. }
  42. private void OnWrapSelectionChanged(object? sender, RoutedEventArgs e)
  43. {
  44. DemoCarousel.WrapSelection = WrapCheck.IsChecked == true;
  45. }
  46. private void OnKeyboardEnabledChanged(object? sender, RoutedEventArgs e)
  47. {
  48. _keyboardEnabled = KeyboardCheck.IsChecked == true;
  49. }
  50. }
  51. }