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

43

WPF和Windows窗体控件是否可以在同一个应用程序中使用?这个想法有多难或实际可行?

6个回答

42
使用ElementHost适配器,您可以相对简单地在WinForms应用程序中托管WPF控件;或者使用WindowsFormsHost适配器,在WPF应用程序中托管WinForms控件。然而,关于如何执行这两种操作的网络资源并不是太多。在学习如何为自己完成这些任务的过程中,我很快就发现了两条路径之间固有的对称性,并将所有笔记浓缩成一篇文章,采用独特的方法比较和对比这些对称性:这篇文章实际上是两篇并排的文章,详细比较每个步骤,从一个技术中创建用户控件到在“相反”的技术中托管它。我的文章于2010年8月在SimpleTalk.com上发布,可以在此处找到:混合使用WPF和WinForms
为了完整起见,这里有几个好的MSDN参考文献,每个都针对其中一条路径。事实上,伴随我的文章的演示解决方案正是从这两个参考文献开始的:

混合使用WPF和WinForms的文章是一个很好的例子。非常清晰地解释并且有良好的插图,对于任何考虑这种活动的人来说都是必读的。谢谢! - RAM

17

1
链接已更改: https://learn.microsoft.com/zh-cn/archive/blogs/ivo_manolov/wpf-win32-interop-part-1-hosting-winforms-controls-datagridview-in-wpf-windows - Allen Clark Copeland Jr

4

我们在现有的LOB WinForms应用程序中托管了相当复杂的WPF控件。虽然可以完成,但我们确实遇到了问题(一些无疑是由于陡峭的学习曲线造成的)。这些问题主要与预期时未触发失去焦点事件以及键盘导航问题有关。


4
当托管非WPF内容时(无论是HTML、WinForms还是Win32内容),您将会遇到Airspace问题。这意味着您无法完全混合WPF内容和托管的内容。您也无法对其进行动画等操作。与滚动视图器有关的一些有趣问题在此处了解更多细节和修复方法也存在。

3

您也可以使用HWNDSource和HWNDHost控件将WPF控件嵌入到WinForms(或任何Win32,实际上)应用程序中。


2

你可以这样做,即在WPF应用程序中使用Windows Forms,或在Windows Forms中使用WPF控件。www.novamind.com的思维导图应用程序成功地融合了这两种技术。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接