在触摸模式下无法选择UWP ListView滚动条

时间:2016-08-09 08:06:56

标签: c# touch win-universal-app uwp

我在通用Windows应用程序中有一个简单的ListView。它在启用触摸的设备和本地计算机上滚动得很好。在触摸设备上,我希望能够点击并拖动滚动条拇指以快速滚动列表(与您点击并用鼠标拖动滚动拇指一样)。但是,当我尝试选择滚动条拇指时,它不起作用;拇指不可选。

起初我以为滚动拇指太小了,所以我摆弄了ScrollBar的默认样式以增加宽度。然后我尝试调整默认ScrollViewer样式中的其他值,例如ScrollingIndicatorModeScrollingIndicatorStates,以便他们始终使用MouseIndicator,并确保所有IsHitTestVisibleTrue。无济于事。

似乎必须在默认样式中允许这样但我无法通过反复试验找到它,并且MSDN文档中没有任何地方可以解决此样式。

这在触摸模式下是否可行?

2 个答案:

答案 0 :(得分:2)

  

这在触摸模式下是否可行?

AFAIK,目前无法做到这一点。 ScrollBar的滚动事件只能通过滚动内容或通过鼠标输入移动Thumb来触发。

这是设计使然,但是如果我们想快速滚动列表,我们只需要在触摸设备上快速滚动一个项目,ListView将首先加快滚动速度,然后放慢速度最后停下来包含ScrollViewer的其他控件在视口(ScrollViewer的内容)中表现相同,在触摸设备中,移动拇指不起作用,加快滚动速度,只能快速滑动在视口上的手势。

我们的建议是,您可以通过Windows反馈工具提交添加此新功能以进行开发的请求。

答案 1 :(得分:0)

为了后人的缘故,我想发布我的工作,其实际上并没有像我想象的那么困难,现在看起来非常好。

基本的想法是使用Slider控件(具有Thumb可选择,可拖动,并沿轨道移动)具有垂直方向并同步{{ 1}} Slider属性(拖动时会更改)到Value的{​​{1}}方法,因此您可以将ListView滚动为ScrollIntoView { {1}}被拖了。反之亦然(在ListView正常滚动时移动Slider Thumb)也需要干净,无缝的体验。我在下面有一些代码示例可以帮助您入门(并非所有内容都可以立即使用)。此外,编辑Slider的默认Thumb模板,使其看起来与滚动条完全相同(甚至可以添加工具提示,以便在拖动时显示当前值)。

注意:我在代码隐藏中使用WinRTXamlToolkit轻松遍历ListView

代码背后:

Slider

XAML:

Style

查看型号:

VisualTree