ListBox就像ItemsControl的Touch Scrolling一样

时间:2015-07-29 12:17:45

标签: c# wpf touch

WPF ListBox内置了一些非常好的触摸滚动功能,我想在简单的ItemsControl上使用。

我更倾向于使用现有的功能来实现这一点,因为我之前的努力(使用TouchDown / Move / Up事件)并不像ListBox的行为那样平滑,并且感觉不同以至于无法识别在使用两个控件的应用程序中。

我尝试在reference source中找到负责ListBox触摸行为的代码,但ListBox类甚至不包含单词“Touch”。

有没有办法在ItemsControl上启用触摸滚动,或者,如果没有,那么负责ListBox的魔术代码隐藏在哪里以便我可以移植它?

3 个答案:

答案 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