Набор средств Windows XamlHostControl в WinForms
Я пытаюсь выполнить самый простой пример на странице ниже, следуя инструкциям для WinForms.
https://docs.microsoft.com/en-us/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost
Я постоянно получаю ошибки при попытке перетащить элемент управления WindowsXamlHost в конструктор
Я общаюсь на форумах MSDN, и этот процесс описывает проблему и то, что я пробовал, см. Следующую ссылку Проблема с WinForms
Может ли кто-нибудь помочь с моей проблемой. Мне действительно нужно попытаться добавить некоторые современные элементы управления UPC в мою программу WinForms.
С уважением
Стив
2 ответа
Спасибо за обратную связь, я могу воспроизвести эту проблему, и это выглядит странным поведением 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>
У меня была такая же проблема при попытке реализовать острова XAML для WinForms с помощью Visual Studio 2017, и вот что я сделал, чтобы обойти проблему.
Изначально я установил версию 6.0 Microsoft.Toolkit.Forms.UI.XamlHost. Я удалил эту версию и вместо нее установил версию 5.1.
Затем я обновил свой проект, чтобы использовать.Net 4.6.2 или новее, и перетаскивание элемента управления XAML Host в конструктор сработало для меня.
Обратите внимание, что этот сайт https://github.com/dotnet/wpf/issues/1290, похоже, указывает на то, что проблема была исправлена в более поздних версиях, но я не мог заставить их работать.