Есть ли способ разместить/отобразить полную форму WinForms (а не только один элемент управления) в каком-то типе управления контейнером или оболочкой в форме WPF? Я ищу что-то подобное в концепции для виртуального include из php или iframe в html. Возможно, скомпилировав его в OCX или DLL.Можно ли разместить форму WinForm в форме WPF через контейнер/упаковщик?
ответ
Насколько я знаю, вы не можете разместить в WPF реальную форму WinForms.
Однако хорошей альтернативой является создание обычного UserControl в WinForms (в качестве проекта библиотеки управления Windows Forms), который содержит все необходимые функциональные возможности и дочерние элементы управления.
Затем в вашем проекте WPF ссылайтесь на файл WindowsFormsIntegration.dll (должен быть на вкладке .NET в Add References).
Затем также ссылайтесь на сборку, содержащую WinForms UserControl, и, наконец, добавьте контейнер Xbox в контейнер WindowsFormsHost.
Для получения дополнительной информации см. Это useful tutorial от Sacha Barber.
Существует статья о CodeProject, в которой показано, как разместить exe как элемент управления в WinForms (это приложение, которое использует страницы вкладок, перетаскивает на него Winform.exe, создает в нем вкладку с этим окном) , полученный из этой статьи here. Я знаю, что вы попросили специально WPF, но, возможно, это может привести вас в правильном направлении?
Надеюсь, это поможет, С уважением, Tom.
вы можете сделать это с помощью следующего кода:
В вашем XAML:
<WindowsFormsHost name="wfHost" />
В ваш код-за:
Form foo = new Form();
foo.TopLevel = false;
foo.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
wfHost.Child = foo;
+1, малоизвестный 'TopLevel'. Используется для этого в * .NET Compact 1.1 * для дублирования функций «подформы», таких как * Microsoft Access *. – AMissico
Не в конечном итоге происходит с этим, но это удивительный инструмент. Спасибо за ссылку. – jasonk