MainWindow.xaml.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. ExtendClientAreaChromeHints = Avalonia.Platform.ExtendClientAreaChromeHints.OSXThickTitleBar;
  28. }
  29. public static string MenuQuitHeader => RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? "Quit Avalonia" : "E_xit";
  30. public static KeyGesture MenuQuitGesture => RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ?
  31. new KeyGesture(Key.Q, KeyModifiers.Meta) :
  32. new KeyGesture(Key.F4, KeyModifiers.Alt);
  33. public void OnOpenClicked(object sender, EventArgs args)
  34. {
  35. _recentMenu.Items.Insert(0, new NativeMenuItem("Item " + (_recentMenu.Items.Count + 1)));
  36. }
  37. public void OnCloseClicked(object sender, EventArgs args)
  38. {
  39. Close();
  40. }
  41. private void InitializeComponent()
  42. {
  43. AvaloniaXamlLoader.Load(this);
  44. }
  45. }
  46. }