如何使wpf webview像webbrowser一样滚动?

我正在尝试在wpf桌面应用程序中使用microsoft.Toolkit.Wpf.UI.Controls.WebView控件。它似乎比Web浏览器控件使用的资源少得多,并且基于边缘而更新得多。但是,与webbrowser控件不同,除非选中,否则它将不会滚动。即,当鼠标悬停在网络浏览器上时,我可以不选择先进行上下滚动,但是如果不是当前选定的控件,则webview会忽略鼠标滚轮。

使用VS2019,以下代码演示了该问题。

<Window x:Class="test0.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:WPF="clr-namespace:microsoft.Toolkit.Wpf.UI.Controls;assembly=microsoft.Toolkit.Wpf.UI.Controls.WebView"
        Title="MainWindow" Height="600" Width="1024">

    <Grid>
        <StackPanel>
            <Button Content="hello world" Height="100" />
            <WPF:WebView Source="https://bing.com" Height="250" />
            <WebBrowser Source="https://bing.com" Height="250" />
        </StackPanel>
     </Grid>

</Window>

在运行时,当鼠标指针悬停时,两个浏览器控件都将滚动。单击按钮(从两个浏览器中移出焦点)后,只有Web浏览器控件在鼠标悬停时滚动。

是否有解决方法?

使用:.NET Framework 4.7.2和microsoft.Toolkit.Wpf.UI.Controls.WebView 5.1.1

wyd379299458 回答:如何使wpf webview像webbrowser一样滚动?

问题解决了!但是与VS或框架版本等无关。在某些情况下,触摸板驱动程序似乎不能很好地与webview控件配合使用。更不用说我使用的是触摸板还是真正的鼠标,但是我从没想到会有任何区别。直到我插入鼠标,才没有问题。

无论如何,解决方案是按照以下说明下载并安装精密的触摸板驱动程序:

https://www.windowscentral.com/how-enable-precision-touchpad-drivers

解决了这个问题...直到Windows决定将驱动程序“更新”回旧版本。停止Windows的唯一方法是按照以下步骤禁用“自动驱动程序下载”:

https://www.laptopmag.com/articles/disable-automatic-driver-downloads-on-windows-10

我希望我曾经提到我正在使用触摸板,因为我怀疑对于那些不使用精密触摸板驱动程序的人来说,该问题可能更容易重现。

,

我相信这就是您想要的。

您将要定义网格的行定义,如下所示,然后将我假设将使用“ hello world”的工具栏分配给网格行0,将Web浏览器分配给网格行1,而不是使用在这种情况下,请使用“堆栈面板”(请参见下面的代码)。

让我知道这是否有所帮助或您是否需要做一些不同的事情,我相信我可以帮助您解决这一问题。

Grid Row Definitions - Microsoft Docs

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:WPF="clr-namespace:Microsoft.Toolkit.Wpf.UI.Controls;assembly=Microsoft.Toolkit.Wpf.UI.Controls.WebView"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800" WindowState="Maximized">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Button Content="hello world" Height="100" Grid.Row="0"/>
        <WebBrowser Source="https://bing.com" Grid.Row="1"/>
        <WPF:WebView Source="https://bing.com" Grid.Row="2"/>
    </Grid>
</Window>
,

我已经创建了一个示例页面,并根据您的要求在答案中提供了代码,请查看现有代码,如果有任何疑问,请尽快与我联系。

<Window x:Class="WpfApp1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:WPF="clr-namespace:Microsoft.Toolkit.Wpf.UI.Controls;assembly=Microsoft.Toolkit.Wpf.UI.Controls.WebView"
    xmlns:local="clr-namespace:WpfApp1"
    mc:Ignorable="d"
    Title="MainWindow" Height="720" Width="1280">
<Grid>
    <StackPanel>
        <Button Content="hello world" Height="100" />
        <!--<WPF:WebView Source="https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8" Height="250" />-->
        <WPF:WebView Source="https://bing.com" Height="250" />
        <WebBrowser Source="https://bing.com" Height="250"/>
    </StackPanel>
</Grid>

Bing是一个视图站点,因此即使您可以直接在Web浏览器上签到,搜索面板也无法滚动。

编辑:

能否请您按照要求检查Windows版本和SDK

https://docs.microsoft.com/en-us/uwp/api/windows.web.ui.interop.webviewcontrol

Windows版本:1809

SDK版本:17763

附加值:

AddInitializeScript

重点关注

LostFocus

,

我已经阅读了您的查询,并尝试找出一些问题。请检查您的Windows和SDK版本HERE

  • 您的Windows版本必须具有以上版本或 1809
  • 您的SDK版本必须具有以上版本或 17763

如有任何疑问或困惑,请告知我。

本文链接:https://www.f2er.com/3147837.html

大家都在问