我有一个WPF应用程序,我有一个嵌入式Web浏览器控件。我想在特定时间通过Web浏览器显示动画,但问题是WPF控件在保持在Web浏览器上时是不可见的。
有没有办法让我的用户控制网络浏览器?
答案 0 :(得分:3)
请先回答我,
此Web浏览器是否控制WPF Web Browser
中托管的Winform
控件或WinFormHost
webbrowser控件?
对于任何在其上显示动画的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>
其中一个肯定适用于你的情况。
答案 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顺序是有点棘手的。