我在通用Windows应用程序中有一个简单的ListView
。它在启用触摸的设备和本地计算机上滚动得很好。在触摸设备上,我希望能够点击并拖动滚动条拇指以快速滚动列表(与您点击并用鼠标拖动滚动拇指一样)。但是,当我尝试选择滚动条拇指时,它不起作用;拇指不可选。
起初我以为滚动拇指太小了,所以我摆弄了ScrollBar
的默认样式以增加宽度。然后我尝试调整默认ScrollViewer
样式中的其他值,例如ScrollingIndicatorMode
和ScrollingIndicatorStates
,以便他们始终使用MouseIndicator
,并确保所有IsHitTestVisible
是True
。无济于事。
似乎必须在默认样式中允许这样但我无法通过反复试验找到它,并且MSDN文档中没有任何地方可以解决此样式。
这在触摸模式下是否可行?
答案 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