【WinUI 3】获取MainWindow、AppWindow、WindowHandle、WindowID实例

问题背景描述

使用各种API或接口时,我们常常需要获取到当前MainWindow、AppWindow、WindowHandle、WindowID等的实例。

问题分析

分析发现,四个实例只需要获取到MainWindow的实例即可都通过API获取到。而MainWindow默认在App类中实例化,故在App初始化或App属性中即可获取其实例。

private Window m_window;

以上是App中定义的m_window变量。它在OnLaunched事件中即被赋值。故我们可以直接把它的访问级别提升为public即实现全局访问。

解决方案

将App中m_window的定义修改为:

public Window m_window;

即可获取到以上所有实例:

MainWindow = (App.Current as App).m_window;
MainWindow_Handle = WinRT.Interop.WindowNative.GetWindowHandle(MainWindow);
MainWindow_ID = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(MainWindow_Handle);
AppWindow = AppWindow.GetFromWindowId(MainWindow_ID);

总结 & 收获

通过访问MainWindow实例,即轻松获取所有欲求实例。但思考后,认为此方法仍不太完美,待优化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值