我有一个WinRT/C#/XAML应用程序,其中一个视图包含一个垂直的项目ListView。根据项目数量,ListView会显示垂直滚动条。以下是XAML定义:
<UserControl.Resources>
<CollectionViewSource
x:Name="myViewSource"
Source="{Binding myViewModel.Items}" />
</UserControl.Resources>
...
<ListView
x:Name="myListView"
ItemsSource="{Binding Source={StaticResource myViewSource}}"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
</ListView>
现在,每次我导航到这个视图时,都会通过在代码后台(OnNavigatedTo)设置数据绑定的SelectedItem属性来选择ListView的选定项。我的问题是:ListView不会自动滚动到此选定项目。滚动条保持在ListView的顶部,用户必须手动滚动以查看选定的项目。
我尝试在代码后台(OnNavigatedTo)设置SelectedItem之后执行myListView.ScrollIntoView(MyViewModel.SelectedItem); ,但它无效。滚动条仍然停留在顶部。
我意识到StackOverflow上有一个线程:Scroll WinRT ListView to particular group 。这似乎是一个类似的问题。但是,当我手动或使用WinRT XAML工具包遍历ListView的可视树时,它找不到ScrollViewer(返回null)。