如何获取 WinUI 3 桌面应用程序的屏幕边界?

Kan*_*n P 5 desktop .net-5 winui-3

我需要在 WinUI 3 桌面应用程序中实现以下要求。

  1. 如何获得屏幕边界?
  2. 如何在运行时更改 Windows 光标类型?

我已经在 WinUI UWP 应用程序中这样做了。

对于屏幕边界,

var visibleBounds = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().VisibleBounds;
var scaleFactor = Windows.Graphics.Display.DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
Size screenSize = new Size((visibleBounds.Width * scaleFactor), (visibleBounds.Height * scaleFactor));
Run Code Online (Sandbox Code Playgroud)

对于光标:

Window.Current.CoreWindow.PointerCursor = new CoreCursor(CoreCursorType.SizeNorthwestSoutheast, 0);
Run Code Online (Sandbox Code Playgroud)

有人请建议如何在 WinUI 桌面应用程序中实现相同的要求?

dem*_*lus 0

我已将以下内容添加到 App.xaml.cs:

private static MainWindow m_window;

public static MainWindow MainWindow { get { return m_window; } }

protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs e)
{  
   m_window = new MainWindow();        
      
   m_window.Activate();
}      
Run Code Online (Sandbox Code Playgroud)

当我在任何地方需要边界时,我可以使用MainWindow.Bounds.

关于光标,您需要ProtectedCursor

this.ProtectedCursor = InputSystemCursor.Create(InputSystemCursorShape.Arrow);
Run Code Online (Sandbox Code Playgroud)

它是唯一受到保护的东西,因此您需要从正确的类中使用它。