触摸设备上的WPF ListBox弹性滚动

时间:2015-06-04 10:01:22

标签: wpf listbox

我在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?

0 个答案:

没有答案