Wpf ListView-滚动到特定项目
我有一个列表视图:Wpf ListView-滚动到特定项目,wpf,xaml,windows-8.1,Wpf,Xaml,Windows 8.1,我有一个列表视图: <ListView ItemsSource="{Binding}" x:Name="LvLevels" Margin="10 60 0 0" SelectionChanged="LvLevels_SelectionChanged"> <ListView.ItemContainerStyle> <Style TargetType="
<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.ScrollIntoView(LvLevels.SelectedItem);
我创建了一个演示示例
下面是一个用于设置DataContext和设置选定项的示例:
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);
列表数据=新列表();
对于(int i=0;i我认为您的问题是由这条线引起的:
LvLevels.SelectedItem = CurrentLevel;
不要使用该行,而是使用类似于该行的内容来测试:
LvLevels.SelectedItem = LvLevels.Items[4];
关键是,您只能将SelectedItem
设置为集合中绑定到ListView.ItemsSource
属性的数据的实际项。完成此操作后,调用LvLevels.ScrollIntoView
应该可以正常工作。这对我没有帮助。我创建了一个小演示示例并更新了问题。很抱歉,我真的不想从完全陌生的人那里加载解决方案。相反,请尝试将int
集合更改为自定义类类型。如果您从“代码隐藏”中选择一个项并调用ScrollIntoView
,那么您将看到它确实工作了……我测试了它,以获得双重肯定。我不提供loa升级解决方案。您只能在浏览器上查看代码。无论如何,我会按照您的建议将代码重写为使用自定义类类型。抱歉,但它不起作用。我用“windows-8.1”标记了我的问题。您是否编写windows-8.1现代UI应用程序?如果编写,您可以共享您的工作解决方案吗?我也使用windows 8.1,但WPF,不是Windows应用商店应用程序。
LvLevels.SelectedItem = LvLevels.Items[4];