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

.NET 6+中WinForms通过XAML Islands托管WinUI 3/UWP的技术求助

.NET 6+ WinForms中XAML Islands相关问题的解决方案

一、.NET 6+ WinForms托管UWP控件的实现步骤

  • 新建.NET 6或更高版本的WinForms项目,安装NuGet包:Microsoft.Toolkit.Forms.UI.Controls(此包专门适配.NET 6+,替代旧版.NET 5及之前的依赖)
  • 配置项目目标Windows版本:在项目属性的「应用」选项卡中,将目标框架的Windows版本设置为**Windows 10 1809(10.0.17763.0)**或更高版本
  • 可视化操作:打开Form设计器,在工具箱中找到WindowsXamlHost控件(若未显示,右键工具箱→「选择项」,浏览选中安装包对应的Microsoft.Toolkit.Forms.UI.XamlHost.dll),拖入Form后,在属性面板的InitialTypeName中填入要托管的UWP控件全名,例如Windows.UI.Xaml.Controls.TextBlock
  • 代码初始化示例:
using Microsoft.Toolkit.Forms.UI.XamlHost;
using Windows.UI.Xaml.Controls;

// 创建XAML Islands宿主控件
var xamlHost = new WindowsXamlHost();
// 指定要托管的UWP控件类型
xamlHost.InitialTypeName = "Windows.UI.Xaml.Controls.Button";
// 获取并配置UWP控件
var uwpButton = xamlHost.Child as Button;
uwpButton.Content = "托管的UWP按钮";
uwpButton.Click += (s, e) => MessageBox.Show("UWP按钮被点击");
// 添加到WinForms窗体
this.Controls.Add(xamlHost);
xamlHost.Location = new Point(50, 50);
xamlHost.Size = new Size(150, 40);

二、WinForms XAML Islands托管WinUI 3的现状

  • 目前官方未支持在WinForms的XAML Islands中直接托管WinUI 3控件,该功能暂无明确的开发完成及上线时间,也无官方示例提供
  • 临时替代方案:可尝试将WinUI 3内容封装为WinUI 3 Desktop控件库,通过自定义WindowsXamlHost扩展实现间接集成,但这种方式存在兼容性问题,且无官方技术支持,不建议用于生产环境
  • 反向备选思路:若场景允许,可改用WinUI 3 Desktop应用作为宿主,通过WindowsFormsHost控件加载WinForms内容,但此方案与你的需求方向相反,仅作参考

内容的提问来源于stack exchange,提问作者E. A. Bagby

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 04:17:42