RetroGamingGamesView.xaml.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System;
  2. using Avalonia.Controls;
  3. using Avalonia.Layout;
  4. namespace ControlCatalog.Pages;
  5. public partial class RetroGamingGamesView : UserControl
  6. {
  7. public Action<string>? GameSelected { get; set; }
  8. public RetroGamingGamesView()
  9. {
  10. InitializeComponent();
  11. GameCyberNinjaBtn.Click += (_, _) => GameSelected?.Invoke("Cyber Ninja 2084");
  12. GameNeonRacerBtn.Click += (_, _) => GameSelected?.Invoke("Neon Racer");
  13. GameDungeonBitBtn.Click += (_, _) => GameSelected?.Invoke("Dungeon Bit");
  14. GameForestSpiritBtn.Click += (_, _) => GameSelected?.Invoke("Forest Spirit");
  15. GamePixelQuestBtn.Click += (_, _) => GameSelected?.Invoke("Pixel Quest");
  16. GameSpaceVoidsBtn.Click += (_, _) => GameSelected?.Invoke("Space Voids");
  17. GameCyberCityBtn.Click += (_, _) => GameSelected?.Invoke("Cyber City");
  18. GamesGrid.SizeChanged += OnGridSizeChanged;
  19. }
  20. void OnGridSizeChanged(object? sender, SizeChangedEventArgs e)
  21. {
  22. const double defaultWidth = 145;
  23. var available = GamesGrid.Bounds.Width;
  24. if (available <= 0) return;
  25. bool singleColumn = available < defaultWidth * 2;
  26. foreach (var child in GamesGrid.Children)
  27. {
  28. if (child is Button btn && btn.Content is Border card)
  29. card.Width = singleColumn ? available : defaultWidth;
  30. }
  31. }
  32. }