使用Scatter ViewItem展平Web浏览器

时间:2013-11-05 01:35:56

标签: c# wpf scatterview

我在WebBrowser中有一个ScatterViewItemScatterView中还有其他ScatterViewItem。

但是,我注意到WebBrowser似乎并没有真正地存在于ScatterViewItem中。当我在其上移动另一个ScatterViewItem(包含Image)时,图像将显示在WebBrowser后面,但在持有WebBrowser的ScatterViewItem前面。这是Z顺序:

  1. web浏览器
  2. 图像
  3. 图片的SVI
  4. WebBrowser的SVI
  5. 哪个看起来很奇怪。我如何解决这个问题,以便当我在其上移动另一个ScatterViewItem时,我正在移动的ScatterViewItem将位于WebBrowser之上?

    编辑: 我截了问题:

    https://db.tt/AbnxlnF0

2 个答案:

答案 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困扰世界的同样的困扰。