You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET MAUI中获取控件Handle以适配Windows应用迁移及第三方库调用

解答

是否可以在.NET MAUI中获取控件的Handle

可以,仅针对Windows平台可通过平台特定API获取,MAUI在Windows端基于WinUI 3实现,你可以通过如下方式拿到对应句柄:

  1. 先引入所需命名空间
#if WINDOWS
using Microsoft.Maui.Platform;
using WinRT.Interop;
#endif
  1. 控件加载完成后调用转换方法获取句柄
#if WINDOWS
// 此处myMauiControl为你的MAUI控件实例
var nativeWinUIControl = myMauiControl.ToPlatform();
IntPtr controlHandle = WindowNative.GetWindowHandle(nativeWinUIControl);
#endif

是否支持创建带独立Handle的控件

和WPF的表现一致,默认WinUI 3的原生控件本身没有独立HWND,上述方法获取到的默认是控件所属主窗口的句柄。如果需要独立Handle,可通过以下两种方案实现:

  • 方案1:使用MAUI的原生控件嵌入能力,嵌入WinForms/WPF控件,这类控件自带独立HWND,可直接按照你之前WinForms的写法拿到独立Handle,需要先在项目中开启对应平台的互操作支持
  • 方案2:自行通过WinUI 3的DesktopWindowXamlSource创建独立的HWND承载内容,再将其嵌入到MAUI页面中

注意事项

  • 所有获取Handle的逻辑必须在控件完成加载(即控件的Loaded事件触发后)再执行,否则会返回无效值
  • 所有平台特定代码需要加#if WINDOWS条件编译符,避免其他平台编译报错

内容的提问来源于stack exchange,提问作者developer82

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:15:03