Сглаживание веб-браузера с помощью ScatterViewItem

У меня есть WebBrowser в ScatterViewItem, Есть также другие ScatterViewItems в ScatterView,

Тем не менее, я заметил, что WebBrowser на самом деле, кажется, не находится в ScatterViewItem. Когда я перемещаю другой ScatterViewItem (содержащий Image) поверх него появится изображение позади WebBrowser но перед ScatterViewItem держа веб-браузер. Это Z-Order:

  1. Веб-браузер
  2. Образ
  3. Изображение SVI
  4. SVI веб-браузера

Который выглядел бы очень странно. Как мне исправить это так, чтобы при перемещении другого ScatterViewItem над ним ScatterViewItem, который я перемещаю, находился поверх веб-браузера?

РЕДАКТИРОВАТЬ: у меня есть скриншот проблема:

https://db.tt/AbnxlnF0

2 ответа

Решение

Не используйте браузер WPF. Использование чего-либо, основанного на Chromium, такого как "Chromium Embedded Framework" или "Awesomium", которое будет отображаться непосредственно в визуал WPF, а не подделывать его плохо, как это делает элемент управления WebBrowser.

Между прочим... в Windows 8.1 современные приложения "metro" имеют доступ к новому элементу управления WebView, который не страдает от того же недостатка, которым 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>
Другие вопросы по тегам