我有完全相同的问题
Passing data from page to page,但仅适用于Windows Phone 8.1(与Windows Phone 7相反).这是一个问题:
我正在寻找如何从一页到另一页传递数据的最佳做法.
在第一页我有一个按钮,从第B页开始.
在页面B上我有6个文本框,允许用户输入信息.当用户完成后,单击按钮将其返回到页面A.
我想将该数据传回给第A页.
我已经看到建议:
构建XML文档并保存到隔离存储
使用App类将信息存储在属性中
像查询字符串一样传递
我正在寻找最佳实践.有没有一个微软推荐或普遍接受的最好的方法?
谢谢
解决方法
在WP8.1运行时 – 对于Silverlight,the methods used in WP8.0仍然可以工作 – 你有几个选择:
>第一个也许最简单的方法是使用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传递您的数据
>最后,如你所提到的,您可以将数据保存在:LocalSettings,LocalStorage,LocalCache – 在这种情况下,您也必须将其序列化到XAML,Json或其他.
请注意,您还必须处理应用程序暂停/恢复 – 因此在应用程序暂停时保存数据并在恢复时加载.你应该记住,当应用程序恢复时,OnNavigatedTo不被调用.
以上是关于正常的导航(向前).如果要填写上一页中的某些数据,那么您有几个选项:
将一个处理程序传递给上一个页面,这样可以从当前页面访问公共变量/属性,
>使用静态变量/属性 – 可能是单例
>再次使用文件/设置