WebView2 在 ScrollViewer 中按下箭头键时失去焦点
WebView2 lose focus at arrow keys press inside ScrollViewer
我对 WPF 的 WebView2
有疑问。在 ScrollViewer
、WebView2
中,在按箭头键 时失去焦点。删除 ScrollViewer
,WebView2
焦点工作正常,为什么?有办法解决这个问题吗?
在 WebView2
中呈现了一个 html 编辑器,但这不是问题的原因。
xaml
的例子
<ScrollViewer>
<StackPanel>
<TextBox />
<TextBox />
<TextBox />
<TextBox />
<wpf:WebView2 x:Name="wb" Height="200" />
<TextBox />
<TextBox />
<TextBox />
</StackPanel>
</ScrollViewer>
规格:
- .net 4.5
- Microsoft Edge WebView2 运行时 100.0.1185.44
我已经创建了一个测试项目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;
}
}
这只是意味着您将无法使用箭头进行滚动。
我对 WPF 的 WebView2
有疑问。在 ScrollViewer
、WebView2
中,在按箭头键 时失去焦点。删除 ScrollViewer
,WebView2
焦点工作正常,为什么?有办法解决这个问题吗?
在 WebView2
中呈现了一个 html 编辑器,但这不是问题的原因。
xaml
的例子<ScrollViewer>
<StackPanel>
<TextBox />
<TextBox />
<TextBox />
<TextBox />
<wpf:WebView2 x:Name="wb" Height="200" />
<TextBox />
<TextBox />
<TextBox />
</StackPanel>
</ScrollViewer>
规格:
- .net 4.5
- Microsoft Edge WebView2 运行时 100.0.1185.44
我已经创建了一个测试项目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;
}
}
这只是意味着您将无法使用箭头进行滚动。