Можно ли разместить форму WinForm в форме WPF через контейнер / оболочку? - PullRequest
6 голосов
/ 19 февраля 2010

Есть ли способ разместить / отобразить полную форму WinForms (а не просто один элемент управления) в каком-либо контроле типа контейнера или оболочки в форме WPF? Я ищу что-то похожее по своей концепции на виртуальное включение из php или iframe в html. Возможно, скомпилировав его в OCX или DLL.

Ответы [ 3 ]

18 голосов
/ 08 мая 2012

Вы можете сделать это с помощью следующего кода:

В вашем XAML:

<WindowsFormsHost name="wfHost" />

В вашем коде:

Form foo = new Form();
foo.TopLevel = false;
foo.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
wfHost.Child = foo;
6 голосов
/ 19 февраля 2010

Насколько мне известно, вы не можете разместить действующую форму WinForms в WPF.

Однако хорошей альтернативой является создание обычного UserControl в WinForms (как проект библиотеки элементов управления Windows Forms), который содержит все необходимые функции и дочерние элементы управления.

Затем в вашем проекте WPF укажите файл WindowsFormsIntegration.dll (он должен находиться на вкладке .NET в разделе «Добавить ссылки»).

Затем также обратитесь к сборке, содержащей WinForms UserControl, и, наконец, добавьте контейнер WindowsFormsHost в XAML.

Для получения дополнительной информации см. полезное руководство Sacha Barber.

1 голос
/ 19 февраля 2010

На CodeProject есть статья, в которой показано, как разместить исполняемый файл в качестве элемента управления на WinForms (это приложение, использующее страницы вкладок, перетащите на него файл Winform.exe, оно создает вкладку с это окно в нем), полученное из этой статьи здесь . Я знаю, что вы просили конкретно WPF, но, возможно, это могло бы привести вас в правильном направлении?

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

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