GUI驱动的应用程序需要托管一些预构建的基于WinForms的组件.这些组件使用GDI +和DirectX的混合提供高性能交互式视图.视图处理控件输入并显示自定义图形渲染.组件在供应商的WinForms工具中进行测试.
一个商业应用程序可以使用WPF作为其GUI并依赖WindowsFormsHost来托管WinForms组件,或者让您体验技术故障,例如输入滞后,更新问题会让您持谨慎态度?
我们目前在我们的软件中使用WindowsFormsHost来托管WinForms DataGridView控件,我们没有遇到任何实际问题.有几点需要注意:
首先是空域限制.实际上,这意味着WinForms内容始终出现在WPF内容之上.因此,如果您使用WPF装饰,如果它们遇到您应用中的WinForms区域,它们似乎会被"修剪".
第二,因为他们使用Windows资源,所以你必须更仔细地管理WinForms组件的生命周期.与WPF组件不同,WinForms控件在完成后期望处理.这使得将它们包含在纯XAML视图中变得棘手.
最后一点是,WinForms控件似乎没有像WPF显示的其余部分那样平滑地调整:一旦完成调整,它们往往会捕捉到新的大小.