WindowsFormsHost是否适合目的(.net WPF托管WinForms)?
Is WindowsFormsHost fit for purpose (.net WPF hosting WinForms)? GUI驱动的应用程序需要托管一些基于WinForms的预构建组件。 商业应用程序可以将WPF用于其GUI并依靠WindowsFormsHost托管WinForms组件吗? 我们当前在软件中使用WindowsFormsHost来托管WinForms DataGridView控件,并且它没有任何实际问题。不过要注意以下几点: 第一个是空域限制。实际上,这意味着WinForms内容总是出现在WPF内容之上。因此,如果您使用的是WPF装饰器,则当它们与您应用程序中的WinForms区域碰撞时,它们将被"修剪"。 第二个原因是,由于它们使用Windows资源,因此您必须更仔细地管理WinForms组件的生存期。与WPF组件不同,WinForms控件需要在完成后才进行处理。这使得将它们包含在纯XAML视图中变得很棘手。 最后一件事是WinForms控件的调整大小似乎不如WPF显示的其余部分平滑:一旦完成调整,它们往往会捕捉到新的大小。 我遇到的一个问题是嵌入式Win Forms控件不参与应用于其WPF容器的任何转换操作。这会导致视觉闪烁效果,并且嵌入式控件会出现在不适当的位置。我通过将Windows Forms Host的可见性绑定到其WPF容器的动画状态来解决此问题,以便隐藏嵌入式控件,直到动画完成为止,如下所示。
您可以使用.net 3.5 SP1解决空域问题:
请参阅D3DImage简介。 正如@Kent Boogaart所述,我遇到了以下情况:WinForms中托管的WPF应用程序没有WPF应用程序对象(即Application.Current)。这可能会导致许多问题,例如分派器无法将线程调用回UI线程。仅当您在WinForms中托管时才适用,反之则不然。 我还遇到了模式对话框的奇怪问题(即ShowModal调用)。我假设这是因为,在WinForms中,每个控件都有其自己的Win32句柄,而在WPF中,整个Window只有一个句柄。 无论做什么,请测试:) 请注意在Winforms中托管时不存在WPF 我在WinForms中托管了WPF控件,反之亦然。但是,我将广泛测试此类情况,因为很难预测复杂的控制方式。 |
相关内容
-
金蝶迷你版如何增加核算项|金蝶如何加上会计科
金蝶迷你版如何增加核算项|金蝶如何加上会计科目的项目辅助...
-
金蝶旗舰版如何添加会计科目|金蝶如何加上会计
金蝶旗舰版如何添加会计科目|金蝶如何加上会计科目的项目辅...
-
适合电脑手柄游戏|电脑适合手柄的游戏
适合电脑手柄游戏|电脑适合手柄的游戏,,1. 电脑适合手柄的游戏...
-
4693元万能i54570四核心组件的计算机配置清单
4693元万能i54570四核心组件的计算机配置清单,,家里的电脑最好...
-
在Inspiron3000笔记本适合计算机编程和英雄联盟
在Inspiron3000笔记本适合计算机编程和英雄联盟游戏,,问题: 最...
-
苹果笔记本怎么能适合苹果笔记本电脑呢
苹果笔记本怎么能适合苹果笔记本电脑呢,,苹果目前在中国市场上...
-
电脑开机提示wdkeydaemonwdcertm_ccb.exe应用程
电脑开机提示wdkeydaemonwdcertm_ccb.exe应用程序错误,,每次你...
-
未知软件异常应用程序错误解决方案
未知软件异常应用程序错误解决方案,,我有很多朋友的电脑未知软...
-
华硕轻薄笔记本|华硕轻薄笔记本适合打游戏吗
华硕轻薄笔记本|华硕轻薄笔记本适合打游戏吗,,华硕轻薄笔记本...
-
什么职业需要使用苹果电脑|苹果电脑适合程序员
什么职业需要使用苹果电脑|苹果电脑适合程序员使用吗,,1. 苹果...
-
任务管理器如何打开任务管理器应用程序技巧
任务管理器如何打开任务管理器应用程序技巧,,任务管理器广泛应...
-
小米手机安装的应用程序包在哪里
小米手机安装的应用程序包在哪里,,问题: 下载小米手机系统的安...
-
设置应用程序快捷键|电脑应用设置快捷键
设置应用程序快捷键|电脑应用设置快捷键,,电脑应用设置快捷键1...
-
应用程序对象
应用程序对象,,应用程序对象是一个应用程序级对象,用于在所有用...
-
送钱!微软将支付每个新应用程序100美元。
送钱!微软将支付每个新应用程序100美元。,,3月20日最新的百事网...