首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使wpf的wpf视图像浏览器一样滚动?

如何使wpf的wpf视图像浏览器一样滚动?
EN

Stack Overflow用户
提问于 2019-11-07 02:45:38
回答 4查看 963关注 0票数 5

我试图在wpf桌面应用程序中使用Microsoft.Toolkit.Wpf.UI.Controls.WebView控件。它所使用的资源似乎要比浏览器控件少得多,而且更多的是最新的,基于edge的。但是,与webbrowser控件不同的是,除非选中,否则它不会滚动。也就是说,当鼠标在网页浏览器上时,我可以向上和向下滚动而不首先选择,但是如果不是当前选择的控件,webview会忽略鼠标轮。

使用VS2019,下面的代码演示了这个问题。

代码语言:javascript
复制
<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>

在运行时,两个浏览器控件将在鼠标光标结束时滚动。单击按钮(从任一浏览器中移除焦点)后,只有webbrowser控件在mouseover上滚动。

有什么办法可以解决这个问题吗?

使用:.NET框架4.7.2和Microsoft.Toolkit.Wpf.UI.Controls.WebView 5.1.1

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-11-14 04:11:11

问题解决了!但与VS或框架版本等无关。在某些情况下,触屏驱动程序似乎与webview控件不太协调。这是我的疏忽,更不用说我用的是触屏而不是真正的鼠标,但我从来没有想到会有什么不同。直到我插上一只老鼠就没问题了。

无论如何,解决方案是下载并安装精确的触摸屏驱动程序,如下所示:

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

解决了问题..。直到windows决定“更新”司机回到原来的那个。阻止窗口执行此操作的唯一方法是禁用“自动驱动程序下载”,如下所示:

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

我希望我提到我使用的是触摸屏,因为我怀疑这个问题对于那些不使用精确触摸屏驱动程序的人来说可能更容易重现。

票数 2
EN

Stack Overflow用户

发布于 2019-11-11 10:57:13

我已经创建了一个示例页面,并根据您的要求给出了答案中的代码,如果有任何疑问,请检查现有代码并返回给我。

代码语言:javascript
复制
<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://learn.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://learn.microsoft.com/en-us/uwp/api/windows.web.ui.interop.webviewcontrol

Windows版本:1809年

SDK版本: 17763

附加价值:

AddInitializeScript

GotFocus

LostFocus

票数 1
EN

Stack Overflow用户

发布于 2019-11-13 03:58:21

我相信这就是你要找的。

如下面所示,您需要定义网格的行定义,并将我假设的工具栏中的"hello world“分配给Grid Row 0,将web浏览器分配到Grid Row 1中,而不是在此场景中使用Stack Panel (参见下面的代码)。

让我知道,如果这有帮助,或如果你需要做一些不同,我相信我可以帮助你解决这个问题。

网格行定义- Microsoft

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58741245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档