假设我想通过几个页面传递一个对象(引用)。我可以通过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
。
你能告诉我一些更好的方法吗?
答案 0 :(得分:3)
在你的后台处理程序中,不要再向前导航,只需调用GoBack
- 如果你在全局级别而不是在页面级别处理它,通常会更容易。
您可以在全局/静态对象中存储应用程序状态(要在页面导航中保留的内容),也可以直接修改从初始导航传递的对象(如果调用页面仍有引用,它将能够看到变化。)
我会考虑搜索“MVVM Windows Apps”并查看一些结果,以了解构建XAML应用程序的常用方法。