为Windows Phone 8.1传递数据从页面到页面

我有与从页面到页面传递数据完全相同的问题,但仅适用于Windows Phone 8.1(与Windows Phone 7相对)。 这是一个问题:

我正在寻找有关如何从页面传递数据的最佳实践。

在页面AI中有一个触发页面B的按钮。在页面BI上有6个文本框,允许用户输入信息。 用户完成后,单击按钮将其返回到页面A.

我想将该数据传回页面A.

我见过建议:

构建XML文档并保存到独立存储使用App类在属性中存储信息传递它像查询字符串我正在寻找最佳实践。 是否有微软推荐的或者一般被认为是最好的方式?

谢谢

在WP8.1运行时 – 对于Silverlight , WP8.0中使用的方法仍然可以工作 – 你有几个choces:

  • 第一种也许是最简单的方法是使用Navigate with parameter – 如果它是可序列化的类型,则不必将其转换为字符串

    // let's assume that you have a simple class: public class PassedData { public string Name { get; set; } public int Value { get; set; } } // then you navigate like this: Frame.Navigate(typeof(Page1), new PassedData { Name = "my name", Value = 10 }); // and in target Page you retrive the information: protected override void OnNavigatedTo(NavigationEventArgs e) { PassedData data = e.Parameter as PassedData; } 
  • 您可以使用一些静态对象沿App传递数据

  • 最后,正如您所提到的,您可以将数据保存在: LocalSettingsLocalStorageLocalCache中 – 在这种情况下,您还必须将其序列化为XAML,Json或其他。

请注意,您还必须处理应用程序暂停/恢复 – 因此它适用于在应用程序暂停时保存数据并在恢复时加载。 您应该记住在应用程序恢复时没有调用OnNavigatedTo


以上是关于正常导航(前进)。 如果您想填充上一页中的某些数据,那么您有几个选择:

  • 将处理程序传递给上一页,以便您可以从当前页面访问公共变量/属性,
  • 使用静态变量/属性 – 也许是单例
  • 再次使用文件/设置

请注意,前两种方法的缺点是应用程序在挂起后可能会崩溃。 保存到文件可能会更好,思想需要更多的工作和正确的处理。

– 首先创建一个类

 public class PassedData { public string email { get; set; } } 

– 然后您可以在挂起值的页面中导航

 Frame.Navigate(typeof(Frame2), new PassedData { email = emailtxt.Text }); 

– 然后捕获传入另一个页面的值

 var passedData = e.Parameter as PassedData; emailtxt.Text = passedData.email;