我有一个WPF应用程序,其中有一个嵌入式Web浏览器控件。我想在某个特定时间在网络浏览器上显示动画,但问题在于WPF控件在网络浏览器上保留时不可见。通过Web浏览器对WPF进行控制
有什么方法可以显示我的用户对网页浏览器的控制吗?
我有一个WPF应用程序,其中有一个嵌入式Web浏览器控件。我想在某个特定时间在网络浏览器上显示动画,但问题在于WPF控件在网络浏览器上保留时不可见。通过Web浏览器对WPF进行控制
有什么方法可以显示我的用户对网页浏览器的控制吗?
请回答我这个第一次,
这是Web浏览器控制WPF Web Browser
控制或Winform
WebBrowser控件在WinFormHost
托管?
对于任何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控件)无法实现这一功能。
参见: Is there a way to render WPF controls on top of the wpf WebBrowser control?
有一个第三方应用程序Awsomium,应该使之成为可能。
编辑:另一种可能性是在WebBrowser控件上方呈现无框窗口。但将它保持在正确的位置/ z顺序有点棘手。
CefSharp提供基于Chromium/V8的纯WPF浏览器控制,不受Microsoft WebBrowser控件的空域问题(免责声明:我是CefSharp的维护者)。
这是不可能的建立。 – 2012-11-27 11:07:10
无需构建,您可以使用二进制版本:https://github.com/ataranto/CefSharp/downloads – anthony 2012-11-27 23:17:05
安东尼,怎么不可能建立顺便说一句? :)我刚刚尝试过我的VS2012并失败。我尝试了chillitom的分支和你的分支。抱怨外部引用的负载。 – 2013-04-23 10:47:13
WPF Web浏览器控件在技术上是一个打包的WinForms WebBrowser控件,因此它在WinForms图层中呈现,该图层始终位于WPF图层上方。 Adorners和Popups因此不会工作:( – SvenG 2012-02-09 09:59:20
据我记忆,我已经成功使用了Transparent'Popup'。 – 2012-02-09 10:04:48
+1,即使我已经使用了透明弹出窗口来满足这个确切要求。 – 2012-02-09 10:34:17