我有一个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);
答案 0 :(得分:0)
我相信你的问题是由这一行引起的:
LvLevels.SelectedItem = CurrentLevel;
而不是那一行,使用类似这样的行来测试:
LvLevels.SelectedItem = LvLevels.Items[4];
关键是您只能将SelectedItem
设置为绑定到ListView.ItemsSource
属性的数据集合中的实际项。完成后,对LvLevels.ScrollIntoView
的调用应该可以正常工作。