ListView的精确滚动位置
我想保存ListView的精确滚动位置,listview,windows-runtime,windows-phone-8.1,Listview,Windows Runtime,Windows Phone 8.1,我想保存列表视图的位置,然后加载它,以便列表视图将显示在之前的确切位置ListView.ScrollIntoView()不够精确。使用该属性获取偏移量,然后重置它。由于它们位于ScrollViewer的上,因此需要从可视树中提取。请注意,此代码假定您没有重新设置列表视图的模板。此示例假定对象名为myListView: ScrollViewer scrollViewer; double offset; public MainPage() { this.InitializeComponent(
列表视图
的位置,然后加载它,以便列表视图
将显示在之前的确切位置ListView.ScrollIntoView()不够精确。使用该属性获取偏移量,然后重置它。由于它们位于ScrollViewer的上,因此需要从可视树中提取。请注意,此代码假定您没有重新设置列表视图的模板。此示例假定对象名为myListView
:
ScrollViewer scrollViewer;
double offset;
public MainPage()
{
this.InitializeComponent();
// Have to wait until the templates have been created
SizeChanged += MainPage_SizeChanged;
}
void MainPage_SizeChanged(object sender, SizeChangedEventArgs e)
{
// Assumes default template
scrollViewer = VisualTreeHelper.GetChild(
VisualTreeHelper.GetChild(myListView, 0), 0) as ScrollViewer;
// Not needed any more
SizeChanged -= MainPage_SizeChanged;
}
private void GetOffsetClicked(object sender, RoutedEventArgs e)
{
offset = scrollViewer.VerticalOffset;
}
private void SetOffsetClicked(object sender, RoutedEventArgs e)
{
scrollViewer.ScrollToVerticalOffset(offset);
}
非常感谢。它工作得很好。当我在两个ListViews项目中使用ListViews
透视时出现问题。当我试图从可视化树中获取ScrollViewer时,出现了一个异常“参数不正确”。