我在xaml中定义了一个wpf ListBox,如下所示
<ListBox HorizontalContentAlignment="Stretch" ItemsSource="{Binding MyCollection}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}}">
<TextBlock Text="{Binding DisplayText}"></TextBlock>
</DockPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这给出了一个水平滚动列表框,其中每个项目都占用了列表框的整个宽度。在触摸设备上使用此功能时,在列表框中拖动手指会以连续方式移动项目,即我可以拖动手指并显示第一个项目的后半部分,第二个项目的前半部分显示。
我想要的是,该项目弹性地默认为占据视口大部分的任何项目。例如,如果我拖动手指使第一个项目的三分之一显示,并且第二个项目的三分之二显示,并释放我的手指,则列表框将“弹性地”滚动到第二个项目。有没有办法用ListBox?