2012-02-09 58 views
4

我有一个WPF应用程序,其中有一个嵌入式Web浏览器控件。我想在某个特定时间在网络浏览器上显示动画,但问题在于WPF控件在网络浏览器上保留时不可见。通过Web浏览器对WPF进行控制

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

回答

2

请回答我这个第一次,

这是Web浏览器控制WPF Web Browser控制或Winform WebBrowser控件在WinFormHost托管?

对于任何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> 

其中一个一定会在你的情况下工作。

+4

WPF Web浏览器控件在技术上是一个打包的WinForms WebBrowser控件,因此它在WinForms图层中呈现,该图层始终位于WPF图层上方。 Adorners和Popups因此不会工作:( – SvenG 2012-02-09 09:59:20

+1

据我记忆,我已经成功使用了Transparent'Popup'。 – 2012-02-09 10:04:48

+1

+1,即使我已经使用了透明弹出窗口来满足这个确切要求。 – 2012-02-09 10:34:17

1

不幸的是,由于操作系统渲染WinForms和WPF内容的顺序,WPF Webbrowser控件(基本上是一个包装的WinForms WebBrowser控件)无法实现这一功能。

参见: Is there a way to render WPF controls on top of the wpf WebBrowser control?

有一个第三方应用程序Awsomium,应该使之成为可能。

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

1

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

+0

这是不可能的建立。 – 2012-11-27 11:07:10

+1

无需构建,您可以使用二进制版本:https://github.com/ataranto/CefSharp/downloads – anthony 2012-11-27 23:17:05

+0

安东尼,怎么不可能建立顺便说一句? :)我刚刚尝试过我的VS2012并失败。我尝试了chillitom的分支和你的分支。抱怨外部引用的负载。 – 2013-04-23 10:47:13