WPF 3.5 WebBrowser control and ZIndex我试图弄清楚为什么该控件不支持ZIndex。 示例1-效果很好
示例2-不起作用
谢谢, 不幸的是,这是因为WebBrowser控件是Internet Explorer COM控件的package。这意味着它拥有自己的HWND,并且不允许WPF在其上绘制任何内容。它具有与在WPF中托管任何其他Win32或WinForms控件相同的限制。 MSDN具有有关WPF / Win32互操作的更多信息。 您遇到了一个常见的WPF陷阱,通常被称为"空域问题"。一个可能的解决方案是不使用WebBrowser控件,而要疯狂一些-即将嵌入式WebKit浏览器直接呈现到WPF。有两个软件包可以执行此操作; Awesomonium(商业)和Berkelium(开源)。这两个都有一个.NETpackage器。 您可以设置SetWindowRgn来隐藏重叠区域,如下所示:
我设法通过使用此结构来解决此问题,请检查每个元素中的属性配置:
您只需要管理扩展器以显示或隐藏您的内容,我将其用于菜单栏,我认为扩展器视情况是可选的。 查看结果的图片,您甚至可以将控件显示在WebBrowser的顶部,甚至还可以显示在主窗口之外:
我也遇到了这个问题。就我而言,我是将图像从一个面板拖到WebBrowser中,但是,当然,只要将图像移到浏览器中,它就会被隐藏。 当前正在研究以下解决方案: 此解决方案非常适合我的情况,但也许可以为您提供一些想法。 我解决了一个类似的问题,该问题是我在WPF应用程序中托管了一个第三方WinForms控件。我创建了一个WPF控件,该控件将WinForms控件呈现在内存中,然后将其绘制到位图。然后,在OnRender方法中使用DrawImage绘制呈现的内容。最后,我将鼠标事件从我的控件路由到了托管控件。对于网络浏览器,您还必须路由键盘事件。 我的情况相当简单-带有一些简单鼠标交互的图表。 Web浏览器控件可能还有其他我没有考虑的问题。无论如何,我希望对您有所帮助。 |