我在为嵌入式设备开发触控友好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>
ItemsSource设置为IEnumerable<Brush>
,包含System.Windows.Media.Brushes中的所有141个画笔。
我玩过一些配置选项但没有用。我试过了
VirtualizingStackPanel.IsVirtualizing
真假ScrollViewer.CanContentScroll="True"
(当时很难说,但我认为这个问题仍然存在)由于鼠标滚动很好,我真的不希望这些可以帮助任何人,但是......好吧......我试过了。 =)
答案 0 :(得分:0)
您是否尝试过使用VirtualizingStackPanel.VirtualizationMode="Recycling"
?
答案 1 :(得分:0)
作为一种解决方法,我使用TouchX
事件重新实现了触摸滚动。这样可以顺利运行它所运行的系统。
答案 2 :(得分:0)
在Microsoft.Surface SDK中,SurfaceListBox是一个非常好的控件,支持所有触摸事件Microsoft surface