UWP - 在页面之间传递参数的正确方法

时间:2016-02-17 17:34:18

标签: windows-10 win-universal-app

假设我想通过几个页面传递一个对象(引用)。我可以通过Frame.Navigate(typeof(FirstPage), object)导航并传递参数。但是如何正确地将参考传递回来?

protected override void OnNavigatedTo(NavigationEventArgs e) {
   if (e.Parameter is SomeClass) {
      this.someObject = (SomeClass)e.Parameter;
   }
   else {
      this.someObject = new SomeClass();
   }

   SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
   SystemNavigationManager.GetForCurrentView().BackRequested += OnHardwareButtonsBackPressed;

   base.OnNavigatedTo(e);
}


private void OnHardwareButtonsBackPressed(object sender, BackRequestedEventArgs e) {
   // This is the missing line!
   Frame.Navigate(typeof(FirstPage), this.someObject);
}

但是当我按下后退按钮时,它会返回FirstPage OnNavigatedTo而没有参数,然后返回SecondPage OnHardwareButtonsBackPressed,然后返回{{1带填充参数的FirstPage

你能告诉我一些更好的方法吗?

1 个答案:

答案 0 :(得分:3)

在你的后台处理程序中,不要再向前导航,只需调用GoBack - 如果你在全局级别而不是在页面级别处理它,通常会更容易。

您可以在全局/静态对象中存储应用程序状态(要在页面导航中保留的内容),也可以直接修改从初始导航传递的对象(如果调用页面仍有引用,它将能够看到变化。)

我会考虑搜索“MVVM Windows Apps”并查看一些结果,以了解构建XAML应用程序的常用方法。