DrawerPageCompactPage.xaml.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using Avalonia.Controls;
  2. using Avalonia.Controls.Primitives;
  3. using Avalonia.Interactivity;
  4. namespace ControlCatalog.Pages
  5. {
  6. public partial class DrawerPageCompactPage : UserControl
  7. {
  8. private bool _isLoaded;
  9. public DrawerPageCompactPage()
  10. {
  11. InitializeComponent();
  12. }
  13. protected override void OnLoaded(RoutedEventArgs e)
  14. {
  15. base.OnLoaded(e);
  16. _isLoaded = true;
  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 OnLayoutChanged(object? sender, SelectionChangedEventArgs e)
  28. {
  29. if (!_isLoaded)
  30. return;
  31. DemoDrawer.DrawerLayoutBehavior = LayoutCombo.SelectedIndex switch
  32. {
  33. 0 => DrawerLayoutBehavior.CompactOverlay,
  34. 1 => DrawerLayoutBehavior.CompactInline,
  35. _ => DrawerLayoutBehavior.CompactOverlay
  36. };
  37. }
  38. private void OnCompactLengthChanged(object? sender, RangeBaseValueChangedEventArgs e)
  39. {
  40. if (!_isLoaded)
  41. return;
  42. DemoDrawer.CompactDrawerLength = e.NewValue;
  43. CompactLengthText.Text = ((int)e.NewValue).ToString();
  44. }
  45. private void OnDrawerLengthChanged(object? sender, RangeBaseValueChangedEventArgs e)
  46. {
  47. if (!_isLoaded)
  48. return;
  49. DemoDrawer.DrawerLength = e.NewValue;
  50. DrawerLengthText.Text = ((int)e.NewValue).ToString();
  51. }
  52. private void OnMenuItemClick(object? sender, RoutedEventArgs e)
  53. {
  54. if (!_isLoaded)
  55. return;
  56. if (sender is not Button button)
  57. return;
  58. var item = button.Tag?.ToString() ?? "Home";
  59. DetailTitleText.Text = item;
  60. DetailPage.Header = item;
  61. DemoDrawer.IsOpen = false;
  62. }
  63. private void UpdateStatus()
  64. {
  65. StatusText.Text = $"Drawer: {(DemoDrawer.IsOpen ? "Open" : "Closed")}";
  66. }
  67. }
  68. }