ListView - 滚动到特定项目

时间:2014-10-07 11:59:19

标签: wpf xaml windows-8.1

我有一个ListView:

<ListView ItemsSource="{Binding}" x:Name="LvLevels" 
                  Margin="10 60 0 0" 
                  SelectionChanged="LvLevels_SelectionChanged">

        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
            </Style>
        </ListView.ItemContainerStyle>

        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel>

                    <Border BorderBrush="White" BorderThickness="6">
                        <TextBlock Text="{Binding}" 
                                   FontSize="56" FontWeight="ExtraBold"
                                   Margin="10"
                                   HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                                   TextAlignment="Center">


                        </TextBlock>
                    </Border>

                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

我需要选择特定的项目并滚动ListView。我可以选择项目:

LvLevels.SelectedItem = CurrentLevel;

但我无法将ListView滚动到此项目。这是我的代码:

LvLevels.ScrollIntoView(LvLevels.SelectedItem);

我创建了演示示例here

这是code设置DataContext并设置Selected Item:

        List<int> data = new List<int>();
        for (int i = 0; i <= 20; i++)
            data.Add(i);

        LvLevels.DataContext = data;

        LvLevels.SelectedItem = LvLevels.Items[14];
        LvLevels.ScrollIntoView(LvLevels.SelectedItem);

1 个答案:

答案 0 :(得分:0)

我相信你的问题是由这一行引起的:

LvLevels.SelectedItem = CurrentLevel;

而不是那一行,使用类似这样的行来测试:

LvLevels.SelectedItem = LvLevels.Items[4];

关键是您只能将SelectedItem设置为绑定到ListView.ItemsSource属性的数据集合中的实际项。完成后,对LvLevels.ScrollIntoView的调用应该可以正常工作。