Сглаживание веб-браузера с помощью ScatterViewItem
У меня есть WebBrowser
в ScatterViewItem
, Есть также другие ScatterViewItems в ScatterView
,
Тем не менее, я заметил, что WebBrowser на самом деле, кажется, не находится в ScatterViewItem. Когда я перемещаю другой ScatterViewItem (содержащий Image
) поверх него появится изображение позади WebBrowser
но перед ScatterViewItem
держа веб-браузер. Это Z-Order:
- Веб-браузер
- Образ
- Изображение SVI
- SVI веб-браузера
Который выглядел бы очень странно. Как мне исправить это так, чтобы при перемещении другого ScatterViewItem над ним ScatterViewItem, который я перемещаю, находился поверх веб-браузера?
РЕДАКТИРОВАТЬ: у меня есть скриншот проблема:
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>