WebView2 在 ScrollViewer 中按下箭头键时失去焦点

WebView2 lose focus at arrow keys press inside ScrollViewer

我对 WPFWebView2 有疑问。在 ScrollViewerWebView2 中,在按箭头键 时失去焦点。删除 ScrollViewerWebView2 焦点工作正常,为什么?有办法解决这个问题吗?

WebView2 中呈现了一个 html 编辑器,但这不是问题的原因。

xaml

的例子
<ScrollViewer>
        <StackPanel>
            <TextBox />
            <TextBox />
            <TextBox />
            <TextBox />
            <wpf:WebView2 x:Name="wb" Height="200" />
            <TextBox />
            <TextBox />
            <TextBox />
        </StackPanel>
    </ScrollViewer>

规格:

我已经创建了一个测试项目here

调查一下,这似乎是因为 ScrollViewer 的工作原理 - 箭头键是滚动事件。

解决方法是为 PreviewKeyDown 事件创建处理程序。如果您要将 ScrollViewer 的标记调整为如下所示:

<ScrollViewer  x:Name="scroller"  PreviewKeyDown="scroller_PreviewKeyDown">
    <StackPanel>
        <TextBox />
        <TextBox />
        <TextBox />
        <TextBox />
        <wpf:WebView2 x:Name="wb" Height="200" />
        <TextBox />
        <TextBox />
        <TextBox />
    </StackPanel>
</ScrollViewer>

然后您可以在后面的代码中执行此操作:

private void scroller_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
     {
         if (e.Key == Windows.System.VirtualKey.Up || e.Key == Windows.System.VirtualKey.Down || e.Key == Windows.System.VirtualKey.Left || e.Key == Windows.System.VirtualKey.Right)
         {
             e.Handled = true;
         }
     }

这只是意味着您将无法使用箭头进行滚动。