2013-08-02 90 views
0

我一個值傳遞給一個頁面回到導航加載頁面作爲其第一狀態

NavigationService.Navigate("/SportsPage.xaml?Number=5",UriKind.Relative); 

Number值的變化,而用戶處於頁,它得到10例如。然後他轉到另一個頁面,但在從該頁面返回到該頁面後,該數字仍然是5,就像這是第一次。但我希望它是用戶離開頁面時的數字(即10)。

我可以將它保存到存儲並在navigationTo上檢索它,但事實並非如此。

是否有可能返回到最後一個狀態的頁面?

回答

2

當您按下後退按鈕時,頁面返回到其最後狀態。問題在於返回頁面時再次執行OnNavigatedTo事件,因此您必須小心不要覆蓋變量的值。

基本上,你的代碼是一樣的東西:

protected virtual void OnNavigatedTo(NavigationEventArgs e) 
{ 
    this.Number = this.NavigationContext.QueryString["Number"]; 
} 

你應該改變它的東西,如:

protected virtual void OnNavigatedTo(NavigationEventArgs e) 
{ 
    if (e.NavigationMode != System.Windows.Navigation.NavigationMode.Back) 
    { 
     this.Number = this.NavigationContext.QueryString["Number"]; 
    } 
} 

這樣一來,你就不會被覆蓋變量時的最後一個值回到頁面。

+0

您是偉大的人......謝謝 – Shi

0

你可以做一個全局變量在App.xaml.cs像這樣:

public int Number { get; set; }. 

而且使用它操縱:

(App.Current as App).Number = 5;