C# · 12月 26, 2021

c# – 将数据从页面传递到Windows Phone 8.1的页面

我有完全相同的问题 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不被调用.

以上是关于正常的导航(向前).如果要填写上一页中的某些数据,那么您有几个选项:

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

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