ListBox触摸滚动性能

Jen*_*ens 6 c# wpf listbox .net-4.0

我的问题

我在为嵌入式设备开发触控友好UI时遇到问题.使用WPF 4.0中的标准ListBox,它支持触摸事件和触摸滚动开箱即用,触摸滚动性能比通过用鼠标拉动滚动条滚动更糟糕.最值得注意的是,当开始滚动轻弹时,滚动停顿的时间只有几分之一秒,但足以感觉不好并使轻弹几乎无法使用(当口吃停止时手势完成,导致没有或最小响应).作为参考,我在Windows资源管理器中使用了触摸滚动,它没有问题并且反应平稳.

为什么ListBox的触摸滚动比使用鼠标滚动要差得多,并且在浏览器中触摸滚动?

我的测试代码

<ListBox x:Name="listBox"
         ScrollViewer.CanContentScroll="False">
    <ListBox.ItemTemplate>
        <DataTemplate DataType="{x:Type Brush}">
            <StackPanel Orientation="Horizontal">
                <Rectangle Width="100"
                            Height="100"
                            Fill="{Binding}" />
                <TextBlock Text="{Binding Color}" FontSize="36" Margin="20"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>            
</ListBox>
Run Code Online (Sandbox Code Playgroud)

ItemsSource设置为IEnumerable<Brush>包含System.Windows.Media.Brushes中的所有141个画笔.

我尝试了什么

我玩过一些配置选项但没有用.我试过了

  • VirtualizingStackPanel.IsVirtualizing 无论是真是假
  • 将刷子数量减少到20个
  • 将ItemsPanel显式设置为VirtualizingStackPanel
  • ScrollViewer.CanContentScroll="True" (当时难以jugde,但我认为问题仍然存在)

由于鼠标滚动很好,我真的没有想到这些可以帮助任何,但是..好吧......我试过了.=)

Jen*_*ens 0

作为解决方法,我使用事件重新实现了触摸滚动TouchX。这与运行其的系统所期望的一样顺利。