WPF ListBox内置了一些非常好的触摸滚动功能,我想在简单的ItemsControl上使用。
我更倾向于使用现有的功能来实现这一点,因为我之前的努力(使用TouchDown / Move / Up事件)并不像ListBox的行为那样平滑,并且感觉不同以至于无法识别在使用两个控件的应用程序中。
我尝试在reference source中找到负责ListBox触摸行为的代码,但ListBox类甚至不包含单词“Touch”。
有没有办法在ItemsControl上启用触摸滚动,或者,如果没有,那么负责ListBox的魔术代码隐藏在哪里以便我可以移植它?
答案 0 :(得分:1)
将ItemsControl
放入ScrollViewer
,并确保触摸事件从ScrollViewer
ItemsControl
<ScrollViewer>
<ItemsControl>
</ItemsControl>
</ScrollViewer>
答案 1 :(得分:1)
使用的ScrollViewer的PanningMode属性(在ControlTemplate内部或在ItemsControl外部)需要设置为&#34; None&#34;以外的其他属性。
负责触摸滚动的代码可以在课程System.Windows.Input.InertiaTranslationBehavior中找到。
答案 2 :(得分:0)
正如他们所说,你需要把你的ItemsControl放到ScrollViewer中,但如果你想要那样做你想要的,你必须设置itemsControl的高度。 看看这篇文章:Making a StackPanel scrollable in Windows Phone 8