Windows WinForms 中的工具包 XamlHostControl
Windows Toolkit XamlHostControl in WinForms
我正在尝试 运行 通过下面页面上的非常基本的示例,遵循 WinForms 的说明
https://docs.microsoft.com/en-us/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost
我在尝试将 WindowsXamlHost 控件拖到设计器上时总是遇到错误
我一直在MSDN论坛交流,这个过程描述了问题和我尝试过的,请看下面link Problem with WinForms
任何人都可以帮助解决我的问题。我真的需要尝试将一些现代 UPC 控件添加到我的 WinForms 程序中。
亲切的问候
史蒂夫
感谢您的反馈,我可以重现这个问题,它看起来 Visual Studio 奇怪的行为,请随意 post 在 Microsoft.Toolkit.Win32 github issue盒子。目前,有一个解决方法是在后面的代码中首字母 WindowsXamlHost
,然后在下面的 InitializeComponent
方法中调用
对于 WinForms
private void CreateUWPControlsFirst()
{
Windows.UI.Xaml.Hosting.WindowsXamlManager.InitializeForCurrentThread();
Windows.UI.Xaml.Controls.Button myButton = new Windows.UI.Xaml.Controls.Button();
myButton.Name = "button1";
myButton.Width = 75;
myButton.Height = 40;
myButton.TabIndex = 0;
myButton.Content = "button1";
myButton.Click += MyButton_Click;
Microsoft.Toolkit.Forms.UI.XamlHost.WindowsXamlHost myHostControl =
new Microsoft.Toolkit.Forms.UI.XamlHost.WindowsXamlHost();
myHostControl.Name = "myWindowsXamlHostControl";
myHostControl.Child = myButton;
myHostControl.Height = 500;
myHostControl.Width = 600;
this.Controls.Add(myHostControl);
}
请注意:如果遇到Catastrophic failure" exception
请添加app.manifest
文件并写入以下内容,然后将win从应用程序的默认清单切换到app.manifest.(右击你的项目 -> application -> Manifest) 详情请参考 Matteo Pagani blog.
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 -->
<maxversiontested Id="10.0.18358.0"/>
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
</assembly>
我在尝试使用 Visual Studio 2017 为 WinForms 实施 XAML Islands 时遇到了同样的问题,这就是我为解决该问题所做的工作。
我最初安装的是 Microsoft.Toolkit.Forms.UI.XamlHost 的 6.0 版。我卸载了那个版本,然后安装了 5.1 版。
然后我将我的项目升级为使用 .Net 4.6.2 或更高版本,并将 XAML 主机控件拖到对我有用的设计器上。
请注意,此站点 https://github.com/dotnet/wpf/issues/1290 似乎表明该问题已在更高版本中修复,但我无法使它们正常工作。
我正在尝试 运行 通过下面页面上的非常基本的示例,遵循 WinForms 的说明
https://docs.microsoft.com/en-us/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost
我在尝试将 WindowsXamlHost 控件拖到设计器上时总是遇到错误
我一直在MSDN论坛交流,这个过程描述了问题和我尝试过的,请看下面link Problem with WinForms
任何人都可以帮助解决我的问题。我真的需要尝试将一些现代 UPC 控件添加到我的 WinForms 程序中。
亲切的问候
史蒂夫
感谢您的反馈,我可以重现这个问题,它看起来 Visual Studio 奇怪的行为,请随意 post 在 Microsoft.Toolkit.Win32 github issue盒子。目前,有一个解决方法是在后面的代码中首字母 WindowsXamlHost
,然后在下面的 InitializeComponent
方法中调用
对于 WinForms
private void CreateUWPControlsFirst()
{
Windows.UI.Xaml.Hosting.WindowsXamlManager.InitializeForCurrentThread();
Windows.UI.Xaml.Controls.Button myButton = new Windows.UI.Xaml.Controls.Button();
myButton.Name = "button1";
myButton.Width = 75;
myButton.Height = 40;
myButton.TabIndex = 0;
myButton.Content = "button1";
myButton.Click += MyButton_Click;
Microsoft.Toolkit.Forms.UI.XamlHost.WindowsXamlHost myHostControl =
new Microsoft.Toolkit.Forms.UI.XamlHost.WindowsXamlHost();
myHostControl.Name = "myWindowsXamlHostControl";
myHostControl.Child = myButton;
myHostControl.Height = 500;
myHostControl.Width = 600;
this.Controls.Add(myHostControl);
}
请注意:如果遇到Catastrophic failure" exception
请添加app.manifest
文件并写入以下内容,然后将win从应用程序的默认清单切换到app.manifest.(右击你的项目 -> application -> Manifest) 详情请参考 Matteo Pagani blog.
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 -->
<maxversiontested Id="10.0.18358.0"/>
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
</assembly>
我在尝试使用 Visual Studio 2017 为 WinForms 实施 XAML Islands 时遇到了同样的问题,这就是我为解决该问题所做的工作。
我最初安装的是 Microsoft.Toolkit.Forms.UI.XamlHost 的 6.0 版。我卸载了那个版本,然后安装了 5.1 版。
然后我将我的项目升级为使用 .Net 4.6.2 或更高版本,并将 XAML 主机控件拖到对我有用的设计器上。
请注意,此站点 https://github.com/dotnet/wpf/issues/1290 似乎表明该问题已在更高版本中修复,但我无法使它们正常工作。