MainWindow.xaml.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.Runtime.InteropServices;
  3. using Avalonia;
  4. using Avalonia.Controls;
  5. using Avalonia.Controls.Notifications;
  6. using Avalonia.Input;
  7. using Avalonia.Markup.Xaml;
  8. using ControlCatalog.ViewModels;
  9. namespace ControlCatalog
  10. {
  11. public class MainWindow : Window
  12. {
  13. private NativeMenu? _recentMenu;
  14. public MainWindow()
  15. {
  16. this.InitializeComponent();
  17. DataContext = new MainWindowViewModel();
  18. _recentMenu = ((NativeMenu.GetMenu(this)?.Items[0] as NativeMenuItem)?.Menu?.Items[2] as NativeMenuItem)?.Menu;
  19. }
  20. public static string MenuQuitHeader => RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? "Quit Avalonia" : "E_xit";
  21. public static KeyGesture MenuQuitGesture => RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ?
  22. new KeyGesture(Key.Q, KeyModifiers.Meta) :
  23. new KeyGesture(Key.F4, KeyModifiers.Alt);
  24. public void OnOpenClicked(object sender, EventArgs args)
  25. {
  26. _recentMenu?.Items.Insert(0, new NativeMenuItem("Item " + (_recentMenu.Items.Count + 1)));
  27. }
  28. public void OnCloseClicked(object sender, EventArgs args)
  29. {
  30. Close();
  31. }
  32. private void InitializeComponent()
  33. {
  34. AvaloniaXamlLoader.Load(this);
  35. }
  36. }
  37. }