2013-08-02 50 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;