如何使 Windows phone 8.1 列表视图在按下 windows phone 后退按钮后打开列表最后一个选定项目?

How to make Windows phone 8.1 listview to open list last selecteditem after pressed windows phone back button?

我在列表视图中显示了图像列表。当我单击列表视图项目时,它会打开另一个页面,其中显示当前图片的更大版本。当我按 Windows phone 后退按钮时,我希望列表视图滚动到之前选择的项目。

我是这样保存的 lsitview.selectedindex:

 private void NavigationHelper_SaveState(object sender, SaveStateEventArgs e)
    {

        e.PageState.Add("id", listview.SelectedIndex);
    }

这就是我尝试设置列表视图的方式:

  private void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
    {

        if (null != e.PageState && e.PageState.ContainsKey("id"))
        {

            int i = (int)e.PageState["id"];
            listview.ScrollIntoView(listview.Items[i]);
            System.Diagnostics.Debug.WriteLine(listview.Items.Count);

        }
    }

我也这样试过,但是不行吗?

 private void listview_Loaded(object sender, RoutedEventArgs e)
 {

      listview.ScrollIntoView(listview.Items[i])
  }

但是当我像这样将普通按钮添加到我的 lisview 页面时:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        listview.ScrollIntoView(listview.Items[i]);
    }

单击按钮后滚动到所选项目。我怎样才能让它在没有按钮的情况下工作,以便 lisview 自动滚动最后选择的项目?

`

如果我没理解错的话,当用户转到图片并返回时,ListView 会滚动到顶部,对吗?在这种情况下,这是因为页面实例未保留在缓存中,因此当您按下后退按钮时它会再次加载。 您可以通过将 NavigationCacheMode 设置为 Enabled 来停止此操作:

<Page x:Class="App.YourClass"
    NavigationCacheMode="Enabled"
</Page>