使WPF控制web浏览器

本文关键字:浏览器 web 控制 WPF | 更新日期: 2023-09-27 18:23:47

我有一个WPF应用程序,其中有一个嵌入式web浏览器控件。我想在某个特定的时间在web浏览器上显示动画,但问题是WPF控件在web浏览器中保留时不可见。

有什么方法可以显示我的用户对网络浏览器的控制吗?

使WPF控制web浏览器

请先回答我这个问题,

此Web浏览器控件是托管在WinFormHost中的WPF Web Browser控件还是Winform Web浏览器控件?

对于任何在上面显示动画的WPF控件,你探索过。。。

  1. 将控件放置在GridCanvas中,然后将拉伸的Border(其中有正在运行的动画)放置为网格/画布的最后一个子对象
  2. Adorner不断更改绘图上下文以模拟动画
  3. 具有动画的透明Popup,其静态放置是在控件上完成的(绑定到控件的绝对左侧、顶部位置和实际高度和宽度属性)

尝试web浏览器控制的透明弹出方式。。。

    <Grid>
        <WebBrowser x:Name="WebBrowser1"/> 
        <Popup IsOpen="{Binding StartAninmation}"
              AllowsTransparency="True"
              Grid.RowSpan="99"
              Grid.ColumnSpan="99"
              Placement="Center"
              Width="{Binding ActualWidth,
                              ElementName=WebBrowser1,
                              Mode=OneWay}"
              Height="{Binding ActualHeight, 
                               ElementName=WebBrowser1,
                               Mode=OneWay}"
              PlacementTarget="{Binding ElementName=WebBrowser1}"
              Opacity="0.5"
              Margin="3">
           <TextBlock Text="Loading ..."/>
       </Popup>
 </Grid>

其中一个肯定对你有效。

不幸的是,由于操作系统呈现WinForms和WPF内容的顺序,WPF Webbrowser控件(基本上是一个封装的WinForms Webbrowser控件)不可能实现这一点。

另请参阅:有没有一种方法可以在WPF WebBrowser控件的顶部呈现WPF控件?

有一个第三方应用程序Awsomium应该会让它成为可能。

编辑:另一种可能性是在WebBrowser控件上方渲染无框架窗口。但是要将它保持在正确的位置/z顺序有点棘手。

CefSharp提供了一个基于Chromium/V8的纯WPF浏览器控件,不受Microsoft WebBrowser控件的空域问题的影响(免责声明:我是CefSharp的维护者)。