ScreensPage.axaml.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. using System.Globalization;
  2. using Avalonia;
  3. using Avalonia.Controls;
  4. using Avalonia.Interactivity;
  5. using Avalonia.Platform;
  6. namespace IntegrationTestApp.Pages;
  7. public partial class ScreensPage : UserControl
  8. {
  9. private Screen? _lastScreen;
  10. public ScreensPage()
  11. {
  12. InitializeComponent();
  13. }
  14. private void ScreenRefresh_Click(object? sender, RoutedEventArgs e)
  15. {
  16. var window = TopLevel.GetTopLevel(this) as Window ??
  17. throw new AvaloniaInternalException("ScreensPage is not attached to a Window.");
  18. var lastScreen = _lastScreen;
  19. var screen = _lastScreen = window.Screens.ScreenFromWindow(window);
  20. ScreenName.Text = screen?.DisplayName;
  21. ScreenHandle.Text = screen?.TryGetPlatformHandle()?.ToString();
  22. ScreenBounds.Text = screen?.Bounds.ToString();
  23. ScreenWorkArea.Text = screen?.WorkingArea.ToString();
  24. ScreenScaling.Text = screen?.Scaling.ToString(CultureInfo.InvariantCulture);
  25. ScreenOrientation.Text = screen?.CurrentOrientation.ToString();
  26. ScreenSameReference.Text = ReferenceEquals(lastScreen, screen).ToString();
  27. }
  28. }