向后导航的Windows Phone 8.1手机参数数据

时间:2015-04-20 12:10:51

标签: c# windows-phone-8.1

我正在创建一个Windows Phone 8.1应用程序。

我的应用程序上有一些屏幕。在第一个屏幕上,我将屏幕导航到带有参数数据的第二个屏幕。现在我想从第二个屏幕导航到具有不同参数数据的第一个屏幕。

使用Frame.Navigate(typeof(frame1),parameter);我可以将数据从第一个屏幕传递到第二个屏幕(向前导航)

Frame.Navigate(typeof(frame1), "data");

但是如何将数据从第二个屏幕传递到第一个屏幕(向后导航)?

2 个答案:

答案 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;