6

有没有办法在 WPF 表单中的某种容器或包装器类型控件中托管/显示完整的 WinForms 表单(不仅仅是单个控件)?我正在寻找与 php 中的虚拟包含或 html 中的 iframe 类似的概念。可能通过将其编译成 OCX 或 DLL。

4

3 回答 3

21

您可以使用以下代码执行此操作:

在您的 XAML 中:

<WindowsFormsHost name="wfHost" />

在您的代码隐藏中:

Form foo = new Form();
foo.TopLevel = false;
foo.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
wfHost.Child = foo;
于 2012-05-08T15:03:02.250 回答
6

据我所知,您无法在 WPF 中托管实际的 WinForms 表单。

然而,一个好的替代方法是在 WinForms(作为 Windows 窗体控件库项目)中创建一个普通的 UserControl,其中包含所有必需的功能和子控件。

然后在您的 WPF 项目中,引用 WindowsFormsIntegration.dll(应该在添加引用的 .NET 选项卡中)。

然后还引用包含 WinForms UserControl 的程序集,最后将 WindowsFormsHost 容器添加到 XAML。

有关更多信息,请参阅 Sacha Barber 的这个有用的教程

于 2010-02-19T00:33:51.970 回答
1

有一篇关于CodeProject的文章展示了如何在 WinForms 上托管一个 exe 作为控件(这是一个使用标签页的应用程序,将 Winform.exe 拖到它上面,它会在其中创建一个带有该窗口的标签页),派生自这个文章在这里。我知道您特别要求 WPF,但也许这可能会引导您朝着正确的方向前进?

希望这会有所帮助,最好的问候,汤姆。

于 2010-02-19T01:00:39.780 回答