【问题标题】:Is it possible to overlap WPF WebBrowser with other UIElement?是否可以将 WPF WebBrowser 与其他 UIElement 重叠?
【发布时间】:2012-02-09 14:53:52
【问题描述】:

我想在 WPF WebBrowser 上添加一些 UIElement (opacity = 0) 即通过这个覆盖的 UIElement 捕获所有点击事件。

可以吗?

此代码不起作用...

<Canvas Name="cnsMain">
  <WebBrowser x:Name="MainBrowser" Visibility="Visible" Panel.ZIndex="0" />
  <Canvas Panel.ZIndex="100" Opacity="0.01"></Canvas>
</Canvas>

谢谢!

【问题讨论】:

标签: c# .net wpf uielement


【解决方案1】:

不,您不能使用最初随 SDK 提供的 WPF WebBrowser 执行此操作。 它总是在其他UIElement之上。

但我认为使用 3rd 方控制是可能的。

详情请看我之前问过的this question

【讨论】:

    【解决方案2】:

    不,WPF Webbrowser 只是 WPF 包装器中的标准浏览器控件。它不是原生 WPF,因此不尊重 WPF 应用程序的ZOrder

    【讨论】:

      【解决方案3】:

      这可以在 .NET 4.5 中完成。它需要在您的WebBrowser 控件渲染之前设置以下属性:

      IsRedirected = true
      CompositionMode = System.Windows.Interop.CompositionMode.Full
      

      这将启用 hwnd 重定向,允许用于渲染的普通顶级 hwnd 重定向到 WPF 表面,该表面可以与树中的其他元素很好地配合。

      编辑: 似乎这个功能在发布之前被从 .NET 4.5 中删除了。如果我给了任何人虚假的希望,我深表歉意。感谢@JoeDaley 指出我的错误。

      【讨论】:

      • 感谢您分享您的答案!
      • 这些属性在哪里?它们不存在于我的 .NET 4.5 WebBrowser 控件中,我在网上搜索到的所有内容都是 2012 年关于如何在最终发布之前从 .NET 4.5 中删除这些属性的帖子。 visualstudio.uservoice.com/forums/121579-visual-studio/…
      • @JoeDaley 哎呀,看来你是对的。有趣的是直到现在还没有人发现。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 2020-03-02
      相关资源
      最近更新 更多