使WPF控制Web浏览器

时间:2012-02-09 07:28:15

标签: c# wpf browser

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

有没有办法让我的用户控制网络浏览器?

2 个答案:

答案 0 :(得分:3)

请先回答我,

此Web浏览器是否控制WPF Web Browser中托管的Winform控件或WinFormHost webbrowser控件?

对于任何在其上显示动画的WPF控件,您是否探索过......

  1. 将您的控件放在GridCanvas中,然后将拉伸的Border(其中包含运行的动画)作为网格/画布的最后一个子项?
  2. Adorner不断更改绘图上下文以模拟动画?
  3. 带有动画的透明Popup,其静态放置是否已完成(绑定到控件的绝对左侧,顶部位置和实际高度和宽度属性)?
  4. 尝试使用透明弹出窗口进行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>
    

    其中一个肯定适用于你的情况。

答案 1 :(得分:2)

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

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

第三方应用Awsomium应该可以实现。

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