WPF 3.5 WebBrowser控件和ZIndex

ems*_*eja 10 browser wpf z-index

我试图找出为什么控件不尊重ZIndex.

例1 - 工作正常

   <Canvas>
       <Rectangle Canvas.ZIndex="1" Height="400" Width="600" Fill="Yellow"/>
       <Rectangle Canvas.ZIndex="2" Height="100" Width="100" Fill="Red"/>
   </Canvas>
Run Code Online (Sandbox Code Playgroud)

示例2 - 不起作用

   <Canvas>
       <WebBrowser Canvas.ZIndex="1" Height="400" Width="600" Source="http://www.stackoverflow.com"/>
       <Rectangle Canvas.ZIndex="2" Height="100" Width="100" Fill="Red"/>
  </Canvas>
Run Code Online (Sandbox Code Playgroud)

谢谢, - Ed

Abe*_*cht 22

不幸的是,这是因为WebBrowser控件是Internet Explorer COM控件的包装器.这意味着它获得了自己的HWND,并且不允许WPF在其上绘制任何内容.它与在WPF中托管任何其他Win32或WinForms控件具有相同的限制.

MSDN有关于WPF/Win32互操作的更多信息.


Arm*_*age 5

您遇到了一个常见的 WPF 陷阱,通常称为“空域问题”。一个可能的解决方案是不使用 WebBrowser 控件,而是使用更疯狂的东西 - 即直接渲染到 WPF 的嵌入式 WebKit 浏览器。有两个包可以做到这一点;Awesomonium(商业)和 Berkelium(开源)。这两个都有一个 .NET 包装器。