Спасибо за ваш отзыв, я могу воспроизвести эту проблему, и она выглядит странно, как 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
файл и напишите содержимое ниже, затем переключите стандартный манифест приложения winfrom на app.manifest (щелкните правой кнопкой мыши ваш проект -> приложение -> манифест). подробнее просьба ссылаться на Маттео Пагани блог .
<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>