WPF和Windows窗体互操作

时间:2016-11-22 02:56:05

标签: c# wpf winforms

WPF和Windows窗体互操作

  

关于MSDN的说明:

在WPF用户界面中,您可以更改元素的z顺序以控制重叠行为。托管的Windows窗体控件是在单独的HWND中绘制的,因此它总是在WPF元素之上绘制。

*但我想知道没有私人方法可以解决它?

2 个答案:

答案 0 :(得分:2)

不,这被称为空域问题(因为WinForms元素占用了所有这些)。

应该有一个关于.NET 4.5 / 4.6的解决方案,但它从未进入生产阶段(source;如果你谷歌它还有其他的)。目前还没有任何消息说微软计划解决它。

本文可能有助于解决这个问题:MSDN

答案 1 :(得分:0)

我的第一个建议是用等效的WPF控件替换Windows Form控件。

第二个建议是接受限制,不要重叠Windows窗体控件上的任何WPF控件。

在某些情况下,您可以使用多个顶级Windows来解决限制。然后,您必须编写一些代码以正确同步Windows的位置或明显的激活状态...

我从来没有在Windows窗体和WPF之间做过,但我在Windows窗体中完成了2个顶级窗口,因此UI的一部分可以是半透明的(目的是能够与另一个应用程序重叠(可能是PDF查看器)以便我们可以从现有图表“复制”曲线。)