我在WebBrowser
中有一个ScatterViewItem
。 ScatterView
中还有其他ScatterViewItem。
但是,我注意到WebBrowser似乎并没有真正地存在于ScatterViewItem中。当我在其上移动另一个ScatterViewItem(包含Image
)时,图像将显示在WebBrowser
后面,但在持有WebBrowser的ScatterViewItem
前面。这是Z顺序:
哪个看起来很奇怪。我如何解决这个问题,以便当我在其上移动另一个ScatterViewItem时,我正在移动的ScatterViewItem将位于WebBrowser之上?
编辑: 我截了问题:
答案 0 :(得分:1)
修复放置WebBrowser的ScatterViewItem的高度和宽度。
它发生的原因是,Wpf WebBrowser是winforms webBrowser的包装器。渲染引擎总是读者winfroms控制Wpf控件因此它发生。
如果您不知道确切的高度和宽度,请使用以下网格
<Window x:Class="WebBrwoser.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="Auto" Width="Auto">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="75*"/>
<RowDefinition Height="25*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="75*"/>
<ColumnDefinition Width="25*"/>
</Grid.ColumnDefinitions>
<WebBrowser Grid.Row="0" Grid.Column="0" Source="https://www.google.co.in"/>
<StackPanel Grid.Column="1" Grid.Row="0">
<Label Content="Web Browser will not hide me" Height="26" FontSize="15"/>
<Label Content="Becaus i'm with in Grid. And it allocates the space for me" Height="26" FontSize="15"/>
</StackPanel>
<StackPanel Grid.Row="1">
<Button Height="30" Width="200" Margin="10"/>
<Button Height="30" Width="200" Margin="10"/>
<Button Height="30" Width="200" Margin="10"/>
<Button Height="30" Width="200" Margin="10"/>
</StackPanel>
</Grid>
</Window>
答案 1 :(得分:1)
不要使用WPF浏览器控件。使用基于Chromium的东西,例如“Chromium Embedded Framework”或“Awesomium”,它将直接渲染到WPF中,而不是像WebBrowser控件那样伪造它。
顺便说一下......在Windows 8.1中,现代“metro”应用程序可以访问一个新的WebView控件,它不会受到WebBrowser困扰世界的同样的困扰。