Home > database >  WebView2 lose focus at arrow keys press inside ScrollViewer
WebView2 lose focus at arrow keys press inside ScrollViewer

Time:04-21

I have an issue with WebView2 for WPF. Inside a ScrollViewer, WebView2 lose focus at arrow keys press. Removing the ScrollViewer, the WebView2 focus works correctly, why? There is a way to fix this?

In WebView2 is rendered an html editor but this is not the cause of the problem.

Example of xaml

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

Specs:

  • .net 4.5
  • Microsoft Edge WebView2 Runtime 100.0.1185.44

I have created a test project here

CodePudding user response:

Looking into it, it looks like that's because it's how ScrollViewer works - arrow keys are scroll events.

A workaround would be to create a handler for the PreviewKeyDown event. If you were to tweak the markup for your ScrollViewer to something like the following:

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

You could then do this in the code behind:

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;
         }
     }

It just means that you won't be able to scroll using the arrows.

  • Related