0
我有一个ListView: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并设置选定条目:
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);
它不帮助我。我创建了一个小示例https://github.com/demas/listview_example并更新了问题。 – demas 2014-10-07 12:38:35
对不起,但我真的不感兴趣加载完整陌生人的解决方案。相反,尝试将您的'int'集合更改为自定义类类型。如果你从后面的代码中选择一个项目,并调用ScrollIntoView,那么你会发现它*工作正常......我测试了它是双重确定的。 – Sheridan 2014-10-07 13:16:38
我不提供加载解决方案。你只能看浏览器上的代码。无论如何,我按照你的意见,并重写代码使用自定义类类型https://github.com/demas/listview_example/blob/master/App6/MainPage.xaml.cs。对不起,但它不起作用。我用'windows-8.1'标签标记了我的问题。你写关于Windows 8.1的现代UI应用程序吗?如果你这样做,你能分享你的工作解决方案吗? – demas 2014-10-07 14:36:11