2015-07-10 68 views
0

我有我在列表視圖中顯示的圖像列表。當我點擊listview項目時,它會打開另一個頁面,顯示當前圖片的較大版本。當我按下Windows手機後退按鈕時,我想讓listview滾動到之前選擇的項目。如何使windows phone 8.1 listview打開上次selecteditem後按下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自動滾動上次選擇的項目?

`

回答

1

如果我理解正確的,當用戶進入到一個畫面,回來,ListView的滾動到頂部,對不對?在這種情況下,這是因爲頁面實例沒有保存在緩存中,因此當您按下後退按鈕時它會再次加載。 您可以通過NavigationCacheMode設置爲Enabled停止此:

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

這個工作非常非常感謝你,先生! – OlliK

相關問題