我正在创建一个Windows Phone 8.1应用程序。
我的应用程序上有一些屏幕。在第一个屏幕上,我将屏幕导航到带有参数数据的第二个屏幕。现在我想从第二个屏幕导航到具有不同参数数据的第一个屏幕。
使用Frame.Navigate(typeof(frame1),parameter);
我可以将数据从第一个屏幕传递到第二个屏幕(向前导航)
Frame.Navigate(typeof(frame1), "data");
但是如何将数据从第二个屏幕传递到第一个屏幕(向后导航)?
答案 0 :(得分:1)
没有简单的解决方案。使用Frame.GoBack
方法无法传递参数。此外,如果您使用NavigationHelper.GoBack
,则无法传递参数。这是设计。如果您返回,您将打开之前打开的视图。这是going back
的定义。你想"恢复"以前的州。
但是,当您将新数据存储到可以从frame1
访问的变量时,会有一种可能的解决方案。
您能说明为什么要使用不同的数据进行向后导航吗?
另一个更好的可能性是使用ContentDialog
。在那里,您可以在打开之前将所需的ViewModel添加到DataContext。之后关闭ContentDialog,您可以验证传递给它的数据。
ContentDialog cd = new MyContentDialog();
if (parameter != null)
{
cd.DataContext = // set context here;
}
await cd.ShowAsync();
//now lets validate or process the necessary data.
答案 1 :(得分:1)
我能想到的唯一解决方案是在App.xaml.cs
中声明一个全局变量,以便您可以从Frame2访问它并设置一个值,然后从Frame1获取值。
public static Object navigationData
{
get;
set;
}
从您到处使用
访问它var data = App.navigationData;