1

我有WebBrowser一个ScatterViewItem。中还有其他 ScatterViewItems ScatterView

但是,我注意到 WebBrowser 似乎并没有真正无缝地驻留在 ScatterViewItem 中。当我在它上面移动另一个 ScatterViewItem (包含一个Image)时,图像将出现在WebBrowser的后面WebBrowser但在前面。ScatterViewItem这是 Z 顺序:

  1. 网页浏览器
  2. 图片
  3. 图像的 SVI
  4. WebBrowser 的 SVI

这看起来很奇怪。如何解决此问题,以便当我在其上移动另一个 ScatterViewItem 时,我正在移动的 ScatterViewItem 将位于 WebBrowser 之上?

编辑:我有截图问题:

https://db.tt/AbnxlnF0

4

2 回答 2

1

修复放置 WebBrowser 的 ScatterViewItem 的高度和宽度。

之所以会这样,是因为,Wpf WebBrowser 是 winforms webBrowser 的 Wrapper。渲染引擎总是读取 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>
于 2013-11-05T01:56:56.433 回答
1

不要使用 WPF 浏览器控件。使用基于 Chromium 的东西,例如“Chromium Embedded Framework”或“Awesomium”,它们将直接呈现到 WPF 视觉对象中,而不是像 WebBrowser 控件那样伪造它。

顺便说一句......在 Windows 8.1 中,现代“地铁”应用程序可以访问一个新的 WebView 控件,该控件不会遭受 WebBrowser 困扰世界的相同问题。

于 2013-11-06T13:09:36.617 回答