Поместите управление поверх Microsoft.Toolkit.Wpf.UI.Controls.WebView - PullRequest
0 голосов
/ 22 февраля 2019
<Grid>
    <!-- xmlns:webview="clr-namespace:Microsoft.Toolkit.Wpf.UI.Controls;assembly=Microsoft.Toolkit.Wpf.UI.Controls.WebView" -->
    <webview:WebView ... /> 

    <Grid x:Name="Overlay"
          Panel.ZIndex="1000"
          Background="Red"
          HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Grid>

Я пытаюсь наложить WebView на другой элемент управления (Overlay).Но кажется, что WebView всегда находится над другими элементами управления.

Есть ли способ поместить элементы управления поверх Microsoft.Toolkit.Wpf.UI.Controls.WebView?

1 Ответ

0 голосов
/ 04 марта 2019

Элемент управления Webview представляет собой обернутый элемент управления UWP , который, в свою очередь, оборачивает компонент win32, как мне кажется.

Из-за проблем с воздушным пространством этот элемент управления не поддерживает прозрачность и всегда отображается поверх.См. Здесь для лучшего описания: https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/technology-regions-overview

Хотя возможно запустить его во всплывающем окне в качестве временного решения , оно не может быть очень перспективным: "Элементы управления WebView могутразмещаться во всплывающем окне. Мы рекомендуем не делать этого, поскольку поддержка этого сценария вскоре будет отключена по соображениям безопасности. " Подробнее см. здесь

CefSharp может быть лучшим решением.Это основано на Chromium и есть пакет Nuget.В приведенном ниже примере красная сетка отображается в браузере:

<Grid>
    <cefSharp:ChromiumWebBrowser Address="https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions" />
    <Grid x:Name="Overlay"
    Height="100"
    Background="Red"
    HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>   
</Grid>

Вывод:

Cefsharp

...