MainWindow.xaml.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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 WindowNotificationManager _notificationArea;
  14. private NativeMenu? _recentMenu;
  15. public MainWindow()
  16. {
  17. this.InitializeComponent();
  18. //Renderer.DrawFps = true;
  19. //Renderer.DrawDirtyRects = Renderer.DrawFps = true;
  20. _notificationArea = new WindowNotificationManager(this)
  21. {
  22. Position = NotificationPosition.TopRight,
  23. MaxItems = 3
  24. };
  25. DataContext = new MainWindowViewModel(_notificationArea);
  26. _recentMenu = ((NativeMenu.GetMenu(this)?.Items[0] as NativeMenuItem)?.Menu?.Items[2] as NativeMenuItem)?.Menu;
  27. }
  28. public static string MenuQuitHeader => RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? "Quit Avalonia" : "E_xit";
  29. public static KeyGesture MenuQuitGesture => RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ?
  30. new KeyGesture(Key.Q, KeyModifiers.Meta) :
  31. new KeyGesture(Key.F4, KeyModifiers.Alt);
  32. public void OnOpenClicked(object sender, EventArgs args)
  33. {
  34. _recentMenu?.Items.Insert(0, new NativeMenuItem("Item " + (_recentMenu.Items.Count + 1)));
  35. }
  36. public void OnCloseClicked(object sender, EventArgs args)
  37. {
  38. Close();
  39. }
  40. private void InitializeComponent()
  41. {
  42. AvaloniaXamlLoader.Load(this);
  43. }
  44. }
  45. }