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