为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传递数据
- 最后,正如您所提到的,您可以将数据保存在: LocalSettings , LocalStorage , LocalCache中 – 在这种情况下,您还必须将其序列化为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;