2013-03-06 47 views
4

我在MSDN和其他网站(http://msdn.microsoft.com/en-us/library/ms751797.aspxhttp://www.abhishekshukla.com/wpf/advanced-wpf-part-5-of-5-interop-in-windows-presentation-foundation/)不支持的WPF和WinForms控件的多级混合嵌套读...WPF的WinForms多级混合筑巢

我有一个应用程序,其中一个WPF窗口具有一个WindowsFormsHost,其中一个WPF控件位于一个ElementHost中。此WPF控件包含WinFormsHost中的其他WinForms控件。 简而言之:WPF - > WinForms - > WPF - > WinForms。

到目前为止,我没有任何问题。在MSDN页面上找到这个小记录后,我想知道该场景中不支持什么,因为它适用于我。

任何想法?

+0

我在你发布的链接中做了“混合”一词的ctrl + F,并没有在整个文本中找到它。作为旁白。你为什么这样做?与WPF保持合作并放弃无用的winforms是不是更好? – 2013-03-06 15:16:06

+1

我在两个链接中都找到了混合词,在MSDN中,它在名为Note的框中链接它,它在3行介绍文本之后开始。我这样做是因为我必须使用传统的WinForms控件,并且想用WPF开发所有新东西。有时我需要在WinForms控件中放置一个新的WPF控件,否则我必须在WinForms中开发新的控件,我肯定不想要 – Harry13 2013-03-06 15:21:58

+0

请问您需要什么样的WinForms控件?...另外,除了需要使用它,我真的不认为它是一个好主意,以这种方式混合它们 – 2013-03-06 15:45:48

回答

2

我会说“不支持”的意思是“自负风险”。大多数事情都会奏效,有些事情是行不通的,而且这取决于你的具体应用,结果是否可以接受。或者,也许你会达到一些哈克解决方法后,可以接受的结果。 MS不会走出去,让它工作。

我已经与一个包含WinForms-WPF-WinForms嵌套的项目合作过了,一般来说这个项目工作得很好 - 不会重写WinForms组件。 焦点是一个问题 - 嵌套控件的行为不如您期望的与焦点获得/丢失事件有关,并且键盘焦点可能卡在嵌套控件中。宿主元素是否认为它具有焦点以及包含的控件是否存在差异。所以我建议将测试集中在用户输入事件和焦点上。

+0

感谢您分享您的体验!请问您的项目中嵌套的程度有多深? – Harry13 2013-03-07 06:35:30

+0

在这种情况下,只有所描述的WF-WPF-WF(即在现有应用中的新WPF组件中重复使用传统控件)。 – 2013-03-07 08:46:21

+0

我认为这也取决于你的窗口是什么类型,如果它是WinForms,你正在使用WinForms基础结构和WPF包装它,如果它是WPF,你正在使用WPF基础结构并且WinForms被包装进它。我认为WPF基础架构应该比其他方式更好地与WinForms交互? – Harry13 2013-03-08 08:15:33