WinForms中的Windows工具包XamlHostControl

gzszwxb4  于 2023-01-14  发布在  Windows
关注(0)|答案(2)|浏览(148)

我将按照WinForms的说明,尝试运行下一页中非常基本的示例
https://learn.microsoft.com/en-us/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost
尝试将WindowsXamlHost控件拖到设计器上时不断出现错误
我一直在MSDN论坛上交流,这个过程描述了问题和我所尝试的,请参见以下链接Problem with WinForms
有没有人能帮我解决这个问题。我真的需要试着把一些现代的UPC控件放进我的WinForms程序里。
此致
史蒂夫

gkl3eglg

gkl3eglg1#

感谢您的反馈,我可以重现这个问题,它看起来Visual Studio奇怪的行为,请随时张贴在Microsoft.Toolkit.Win32 github问题框.目前,有一个变通方案,在代码背后的首字母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文件并写下面的内容,然后将WinForm应用程序的默认清单切换到app. manifest。(右键单击您的项目-〉应用程序-〉清单)有关详细信息,请参阅Matteo帕加尼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>
cedebl8k

cedebl8k2#

我在尝试使用Visual Studio 2017为WinForms实现XAML岛时遇到了同样的问题,以下是我为解决该问题所做的工作。
我最初安装的是Microsoft.Toolkit.Forms.UI.XamlHost的6.0版。我卸载了该版本,并安装了5.1版。
然后,我将项目升级为使用.Net 4.6.2或更高版本,并将XAML Host控件拖动到设计器上。
请注意,这个站点https://github.com/dotnet/wpf/issues/1290似乎表明这个问题在以后的版本中得到了修复,但我无法让那些工作。

相关问题