Kas*_*dum 4 windows-8 windows-runtime winrt-xaml
我正在使用GridView来显示项目列表.我需要能够使用鼠标滚轮在包含GridView的页面中滚动.通过覆盖GridView的模板可以轻松实现这一点
<GridView.Template>
<ControlTemplate>
<ItemsPresenter />
</ControlTemplate>
</GridView.Template>
Run Code Online (Sandbox Code Playgroud)
但是,我还需要可以从触摸设备中选择项目.这通常通过向下轻拂一个项目来完成,之后将被选中.应用上述模板覆盖后,触摸选择机制中断.
我进入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>
Run Code Online (Sandbox Code Playgroud)
如果我以任何方式移除ScrollViewer或禁用水平滚动部分,则触摸选择停止工作.
如何同时启用鼠标滚动和触摸选择?
只是为了澄清,我不需要同时发生的行动.两者都需要在同一个GridView的同一页面上单独工作.
我不认为你的情况是可能的.内部有网格的SV就是问题所在.MSDN文档说GridView阻止PointerWheelChanged事件冒泡:
请参阅GridView文档:
警告PointerWheelChanged事件不会从GridView冒泡.这意味着如果指针位于GridView上,则其内部具有GridView的控件不会接收鼠标滚轮更改消息.例如,如果将GridView放在ScrollViewer中,则当指针位于GridView上时,无法使用鼠标滚轮滚动ScrollViewer.
归档时间: |
|
查看次数: |
1587 次 |
最近记录: |