加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows-8 – 在保持触摸选择项目的能力的同时启用鼠标滚动

发布时间:2020-12-14 03:53:06 所属栏目:Windows 来源:网络整理
导读:我正在使用GridView来显示项目列表.我需要能够使用鼠标滚轮在包含GridView的页面中滚动.通过覆盖GridView的模板可以轻松实现这一点 GridView.Template ControlTemplate ItemsPresenter / /ControlTemplate/GridView.Template 但是,我还需要可以从触摸设备中
我正在使用GridView来显示项目列表.我需要能够使用鼠标滚轮在包含GridView的页面中滚动.通过覆盖GridView的模板可以轻松实现这一点

<GridView.Template>
        <ControlTemplate>
            <ItemsPresenter />
        </ControlTemplate>
</GridView.Template>

但是,我还需要可以从触摸设备中选择项目.这通常通过向下轻拂一个项目来完成,之后将被选中.应用上述模板覆盖后,触摸选择机制中断.

我进入Blend并开始查看GridView的默认模板,如下所示

<ControlTemplate
    TargetType="GridView">
    <Border
        BorderBrush="{TemplateBinding BorderBrush}"
        BorderThickness="{TemplateBinding BorderThickness}"
        Background="{TemplateBinding Background}">
        <ScrollViewer
            x:Name="ScrollViewer"
            BringIntoViewOnFocusChange="{TemplateBinding ScrollViewer.BringIntoViewOnFocusChange}"
            HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}"
            HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
            IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}"
            IsHorizontalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsHorizontalScrollChainingEnabled}"
            IsVerticalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsVerticalScrollChainingEnabled}"
            IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}"
            IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}"
            TabNavigation="{TemplateBinding TabNavigation}"
            VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
            VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}"
            ZoomMode="{TemplateBinding ScrollViewer.ZoomMode}">
            <ItemsPresenter
                HeaderTemplate="{TemplateBinding HeaderTemplate}"
                Header="{TemplateBinding Header}"
                HeaderTransitions="{TemplateBinding HeaderTransitions}"
                Padding="{TemplateBinding Padding}" />
        </ScrollViewer>
    </Border>
</ControlTemplate>

如果我以任何方式移除ScrollViewer或禁用水平滚动部分,则触摸选择停止工作.

如何同时启用鼠标滚动和触摸选择?

只是为了澄清,我不需要同时发生的行动.两者都需要在同一个GridView的同一页面上单独工作.

解决方法

我不认为你的情况是可能的.内部有网格的SV就是问题所在. MSDN文档说GridView阻止PointerWheelChanged事件冒泡:

见GridView docs:

Caution The PointerWheelChanged event does not bubble up from a GridView. This means that a control that has a GridView inside of it does not receive mouse wheel change messages if the pointer is over the GridView. For example,if you put a GridView inside of a ScrollViewer,you can’t scroll the ScrollViewer with the mouse wheel when the pointer is over the GridView.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读