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

Posted

技术标签:

【中文标题】如何获取 WinUI 3 桌面应用程序的屏幕边界?【英文标题】:How to get screen bounds for WinUI 3 Desktop application? 【发布时间】:2021-05-13 07:19:16 【问题描述】:

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

    如何获得屏幕边界? 如何在运行时更改 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));

对于光标:

Window.Current.CoreWindow.PointerCursor = new CoreCursor(CoreCursorType.SizeNorthwestSoutheast, 0);

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

【问题讨论】:

【参考方案1】:

我已将以下内容添加到 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();
      

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

关于光标,你需要ProtectedCursor

this.ProtectedCursor = InputSystemCursor.Create(InputSystemCursorShape.Arrow);

只有它受到保护,所以你需要从正确的类中使用它。

【讨论】:

以上是关于如何获取 WinUI 3 桌面应用程序的屏幕边界?的主要内容,如果未能解决你的问题,请参考以下文章

WinUI 3 XAML DataTemplate - 如何包含由用于绑定的类公开的控件

WinUI 3.0 桌面:文本框的背景颜色在鼠标悬停时更改

.NET Core 3 使用 WinUI

如何在 WinUI3 中将属性绑定到 TreeViewItem.IsSelected?

UIAutomation 元素为远程桌面连接上的边界矩形返回错误值

以编程方式修改osx中的屏幕边界