覆盖 WebBrowser 控件

Overlay over WebBrowser control

我有一个 TabControl(使用 InfragisticTabControl),其中每个 TabItem 都包含一个 WebBrowser 控件,我可以在其中显示 URL,如 www.google.com 或任何 xbap UI。

下面是 TabItem 代码:​​

<Grid>
    <WebBrowser x:Name="myBrowser"
            webHelper:WebBrowserHelper.BrowserSource="{Binding XBAP_URI}"
            Height="Auto"/>

    <Grid Name="MyOverlayGrid" Background="LightGray" Opacity="0.5" 
          Visibility="{Binding Path=IsEnabled, Converter={StaticResource BoolToVisible2}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type igDock:ContentPane}}}">
        <TextBlock Text="User does not have permissions for this application" FontSize="24"/>
    </Grid>
</Grid>

我使用 snoop 验证了可见性绑定是否已正确填充,但我在 myBrowser 控件上没有看到 MyOverlayGrid。我什至尝试为 MyOverlayGrid 更新 Panel.ZIndex,但没有帮助。

唯一有效的方法是将 myBrowser 可见性设置为隐藏(我使用了 snoop),然后我可以看到 MyOverlayGrid。

谁能告诉我我是否做错了什么或遗漏了一些明显的东西?这对于内容控件来说效果很好,对于 WebBrowser 控件来说可能是不可能的,因为它在选项卡控件中启动了新的应用程序(InternetExplorer.exe 或 PresentationHost.exe)?

谢谢,

RDV

Can anyone tell me if I am doing something incorrect or missing something obvious?

恐怕是后者。 WebBrowser 控件托管在一个单独的 HWND 中,该 HWND 总是 绘制在 WPF 元素之上,如 MSDN 上的文档所述:https://msdn.microsoft.com/en-us/library/ms744952(v=vs.110).aspx.

除了应用变通方法(例如将 Grid 放入 Popup 之外,您对此无能为力。

您可能需要考虑使用其他第三方 WebBrowser 控件,例如 Chromium.