DrawerPageFirstLookPage.xaml.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System.Linq;
  2. using Avalonia.Controls;
  3. using Avalonia.Input.GestureRecognizers;
  4. using Avalonia.Interactivity;
  5. namespace ControlCatalog.Pages
  6. {
  7. public partial class DrawerPageFirstLookPage : UserControl
  8. {
  9. public DrawerPageFirstLookPage()
  10. {
  11. InitializeComponent();
  12. EnableMouseSwipeGesture(DemoDrawer);
  13. }
  14. protected override void OnLoaded(RoutedEventArgs e)
  15. {
  16. base.OnLoaded(e);
  17. DemoDrawer.Opened += OnDrawerStatusChanged;
  18. DemoDrawer.Closed += OnDrawerStatusChanged;
  19. }
  20. protected override void OnUnloaded(RoutedEventArgs e)
  21. {
  22. base.OnUnloaded(e);
  23. DemoDrawer.Opened -= OnDrawerStatusChanged;
  24. DemoDrawer.Closed -= OnDrawerStatusChanged;
  25. }
  26. private void OnDrawerStatusChanged(object? sender, System.EventArgs e) => UpdateStatus();
  27. private void OnToggleDrawer(object? sender, RoutedEventArgs e)
  28. {
  29. DemoDrawer.IsOpen = !DemoDrawer.IsOpen;
  30. }
  31. private void OnGestureChanged(object? sender, RoutedEventArgs e)
  32. {
  33. DemoDrawer.IsGestureEnabled = GestureCheck.IsChecked == true;
  34. }
  35. private void OnMenuSelectionChanged(object? sender, SelectionChangedEventArgs e)
  36. {
  37. if (DrawerMenu.SelectedItem is ListBoxItem item)
  38. {
  39. DemoDrawer.Content = new ContentPage
  40. {
  41. Header = item.Content?.ToString(),
  42. Content = new TextBlock
  43. {
  44. Text = $"{item.Content} page content",
  45. FontSize = 16,
  46. HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Center,
  47. VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center
  48. },
  49. HorizontalContentAlignment = Avalonia.Layout.HorizontalAlignment.Stretch,
  50. VerticalContentAlignment = Avalonia.Layout.VerticalAlignment.Stretch
  51. };
  52. DemoDrawer.IsOpen = false;
  53. }
  54. }
  55. private void UpdateStatus()
  56. {
  57. StatusText.Text = $"Drawer: {(DemoDrawer.IsOpen ? "Open" : "Closed")}";
  58. }
  59. private static void EnableMouseSwipeGesture(Control control)
  60. {
  61. var recognizer = control.GestureRecognizers
  62. .OfType<SwipeGestureRecognizer>()
  63. .FirstOrDefault();
  64. if (recognizer is not null)
  65. recognizer.IsMouseEnabled = true;
  66. }
  67. }
  68. }