使WPF控制web浏览器
本文关键字:浏览器 web 控制 WPF | 更新日期: 2023-09-27 18:23:47
我有一个WPF应用程序,其中有一个嵌入式web浏览器控件。我想在某个特定的时间在web浏览器上显示动画,但问题是WPF控件在web浏览器中保留时不可见。
有什么方法可以显示我的用户对网络浏览器的控制吗?
请先回答我这个问题,
此Web浏览器控件是托管在WinFormHost
中的WPF Web Browser
控件还是Winform
Web浏览器控件?
对于任何在上面显示动画的WPF控件,你探索过。。。
- 将控件放置在
Grid
或Canvas
中,然后将拉伸的Border
(其中有正在运行的动画)放置为网格/画布的最后一个子对象 Adorner
不断更改绘图上下文以模拟动画- 具有动画的透明
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的维护者)。