【问题标题】:WPF Control inside a transparent winform is not displayed不显示透明winform内的WPF控件
【发布时间】:2009-12-31 07:55:12
【问题描述】:

我创建了一个简单的 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)。

任何想法如何让一个透明的 Winform 内部带有 WPF 控件并且仍然获得正常行为?

【问题讨论】:

  • 您是否检查过不同的 XP 计算机(具有不同的图形硬件)?像这样的事情通常是图形驱动程序错误。
  • 我也遇到过这个问题,对解决方案也很感兴趣。
  • 我在两台不同硬件的 XP 电脑上进行了测试,得到了相同的结果。我怀疑这与硬件无关,但与 WinForm 和 WPF 互操作有关。
  • 我也有同样的问题。我需要使表单透明但仍保持子控件不透明
  • 你想用这个表格做什么!

标签: wpf interop transparency


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2010-10-30
    • 1970-01-01
    • 2011-08-31
    • 2011-01-21
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    相关资源
    最近更新 更多