MainWindow.axaml.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System.Collections.Generic;
  2. using Avalonia.Controls;
  3. using IntegrationTestApp.Models;
  4. using IntegrationTestApp.Pages;
  5. using IntegrationTestApp.ViewModels;
  6. namespace IntegrationTestApp
  7. {
  8. public partial class MainWindow : Window
  9. {
  10. public MainWindow()
  11. {
  12. // Set name in code behind, so source generator will ignore it.
  13. Name = "MainWindow";
  14. InitializeComponent();
  15. var viewModel = new MainWindowViewModel(CreatePages());
  16. InitializeViewMenu(viewModel.Pages);
  17. DataContext = viewModel;
  18. AppOverlayPopups.Text = Program.OverlayPopups ? "Overlay Popups" : "Native Popups";
  19. }
  20. private MainWindowViewModel? ViewModel => (MainWindowViewModel?)DataContext;
  21. private void InitializeViewMenu(IEnumerable<Page> pages)
  22. {
  23. var viewMenu = (NativeMenuItem?)NativeMenu.GetMenu(this)?.Items[1];
  24. foreach (var page in pages)
  25. {
  26. var menuItem = new NativeMenuItem
  27. {
  28. Header = (string?)page.Name,
  29. ToolTip = $"Tip:{(string?)page.Name}",
  30. ToggleType = NativeMenuItemToggleType.Radio,
  31. };
  32. menuItem.Click += (_, _) =>
  33. {
  34. if (ViewModel is { } viewModel)
  35. viewModel.SelectedPage = page;
  36. };
  37. viewMenu?.Menu?.Items.Add(menuItem);
  38. }
  39. }
  40. private void Pager_SelectionChanged(object? sender, SelectionChangedEventArgs e)
  41. {
  42. if (Pager.SelectedItem is Page page)
  43. PagerContent.Child = page.CreateContent();
  44. }
  45. private static IEnumerable<Page> CreatePages()
  46. {
  47. return
  48. [
  49. new("Automation", () => new AutomationPage()),
  50. new("Button", () => new ButtonPage()),
  51. new("CheckBox", () => new CheckBoxPage()),
  52. new("ComboBox", () => new ComboBoxPage()),
  53. new("ContextMenu", () => new ContextMenuPage()),
  54. new("DesktopPage", () => new DesktopPage()),
  55. new("Gestures", () => new GesturesPage()),
  56. new("ListBox", () => new ListBoxPage()),
  57. new("Menu", () => new MenuPage()),
  58. new("Pointer", () => new PointerPage()),
  59. new("RadioButton", () => new RadioButtonPage()),
  60. new("Screens", () => new ScreensPage()),
  61. new("ScrollBar", () => new ScrollBarPage()),
  62. new("Slider", () => new SliderPage()),
  63. new("Window Decorations", () => new WindowDecorationsPage()),
  64. new("Window", () => new WindowPage()),
  65. ];
  66. }
  67. }
  68. }