Вставка формы Winforms внутри XAML WPF - PullRequest
2 голосов
/ 08 июля 2010

Я пытаюсь интегрировать форму WinForms внутри страницы WPF XAML.Я видел примеры использования элементов управления Windows Forms с использованием WindowsFormsHost, но не для интеграции всей формы.

Есть ли способ сделать это?Форма Windows размещена внутри приложения WPF, и в настоящее время я могу загрузить ее как новое окно, но не внутри страницы XAML.

1 Ответ

3 голосов
/ 24 августа 2010

Поместить форму WinForms в тег WindowsFormsHost в форме WPF - ошибка.Но вы можете создать новую форму из любого проекта WPF.Вот как:

Скажем, у вас есть два проекта "WinFormProj" и "WPFProj".WinFormProj имеет форму «Login».

Сначала добавьте ссылку в проекте WPFProj в WinFormProj.

Затем, после любого события в любом элементе WPFProj, сделайте следующее:

var winFormWindow = new WinFormProj.Login();  
winFormWindow.Show();  
// or  
windFormWindow.ShowDialog();  

Если этого не произойдет, вы можете преобразовать форму WinForms в пользовательский элемент управления, который будет просто великолепно существовать в тэге WindowsFormsHost WPF.Для этого часто просто ...

Перейти к объявлению класса и изменить:

public class Login : Form

на

public class Login : UserControl

Далее в вашемWPF-форму, добавьте проект WinForms в виде пространства имен xml:

xmlns:winForms="clr-namespace:WinFormsProj;assembly=WinFormsProj"

И, наконец, добавьте это в свою Grid / StackPanel / независимо от того, где вы хотите разместить пользовательский элемент управления:

<WindowsFormsHost Name="LoginControl">
    <winForms:LogIn />
</WindowsFormsHost>

Довольно просто, когда вы его демистифицируете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...