Набор средств 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, похоже, указывает на то, что проблема была исправлена ​​в более поздних версиях, но я не мог заставить их работать.

Другие вопросы по тегам