WPF和WinForms可以在应用程序中混合使用吗?

时间:2009-02-01 18:18:59

标签: wpf winforms

WPF和Windows表单控件是否可以在一个应用程序中使用?这个想法有多难或不实用?

6 个答案:

答案 0 :(得分:36)

在带有ElementHost适配器的WPF应用程序中使用WindowsFormsHost适配器或WinForms控件在WinForms应用程序中托管WPF控件相当简单。但是,网上没有太多资源显示如何执行其中任何一项。在学习如何为自己做这件事的过程中,我很快发现了两种途径之间固有的对称性。我将所有笔记都提炼成一篇文章,使用一种独特的方法比较和对比这些对称性:文章实际上是两篇并排的文章,详细比较了每一步,从在一种技术中创建用户控件到在一种技术中托管它应用于“对立”技术。我的文章于2010年8月在SimpleTalk.com上发布,可在此处获取:Mixing WPF and WinForms

为了完整起见,这里有几个很好的MSDN参考,每个路径一个。事实上,我的文章附带的演示解决方案始于以下两个:

答案 1 :(得分:14)

我相信有一个WindowsFormsHost控件可以放在你的WPF应用程序中,它们可以互操作回WinForms代码:

http://blogs.msdn.com/ivo_manolov/archive/2007/07/26/wpf-win32-interop-part-1-hosting-winforms-controls-in-wpf-windows.aspx

答案 2 :(得分:4)

我们在现有的LOB WinForms应用程序中托管了非常复杂的WPF控件。它可以做到,但我们确实有问题(一些问题无疑是由陡峭的学习曲线造成的)。这些主要与丢失焦点事件有关,这些事件在预期时没有被触发,还有键盘导航问题。

答案 3 :(得分:4)

托管非WPF内容(包括HTML,WinForms或Win32内容)时,您会遇到Airspace个问题。这意味着您无法使用托管内容完全堆叠WPF内容。您也无法为其设置动画等。滚动查看器see here for more details and a fix也存在一些有趣的问题。

答案 4 :(得分:3)

您还可以使用HWNDSource和HWNDHost控件将WPF控件嵌入到WinForms(或任何Win32,真正的)应用程序中。

答案 5 :(得分:2)

是的,您可以使用WPF应用程序中的Windows窗体和Windows窗体中的WPF控件。 www.novamind.com的思维导图应用程序是两种技术的成功组合。