不显示透明winform内的WPF控件

时间:2009-12-31 07:55:13

标签: wpf interop transparency

我创建了一个简单的WPF UserControl(任何控件都可以)并将其插入Winform(使用ElementHost)。 这很好用。 WPF控件嵌入在WinForm中,当WinForm在WPF周围移动时,控件随之移动,就像WinForm控件一样。 当我通过将TranparencyKey设置为与BackColor相同的值将WinForm更改为透明时,会出现一些问题: - 不显示WPF控件 - 而是在其位置显示黑色矩形。 - 如果WinForm在屏幕上移动,然后在其原始位置,则会出现WPF控件 - 好像它已被WinForm覆盖。

更改ElementHost的属性(例如BackColorTransparent)并未更改行为。 将WinForm的BackColor和TransparencyKey设置为Black可以解决黑色矩形问题,但是当WinForm被移动时,WPF控件仍然保留在原始位置。

另请注意,这些问题发生在Windows XP SP3(我们的目标操作系统)下,但不在Windows 2003上。 (我们没有检查Vista和Windows 7)。

任何想法如何在内部使用带有WPF控件的透明Winform并仍能获得正常行为?

1 个答案:

答案 0 :(得分:0)

您是否在WPF控件上设置了背景属性?默认情况下,它继承自它的父容器,如果它不存在,它将执行此操作。尝试将UserControl上的background属性设置为白色或灰色,您的问题应该消失。