我有与Passing data from page to page完全相同的问题,但仅适用于Windows Phone 8.1(与Windows Phone 7相对)。这是一个问题:
我正在寻找有关如何将数据从一个页面传递到另一个页面的最佳实践。
在页面A中,我有一个按钮,可以触发页面B. 在页面B上,我有6个文本框,允许用户输入信息。用户完成后,单击按钮将其返回到页面A.
我想将该数据传回页面A.
我见过以下建议:
构建XML文档并保存到隔离存储 使用App类在属性中存储信息 像查询字符串一样传递它 我正在寻找最佳实践。是否有微软推荐的或者通常被认为是最好的方式?
由于
答案 0 :(得分:16)
在WP8.1运行时 - 对于 Silverlight ,the methods used in WP8.0仍然应该有效 - 你有几个choces:
第一种也许最简单的方法是使用Navigate with parameter - 如果它是可序列化的类型,则不必将其转换为 string :
// 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上传递数据
请注意,您还必须处理应用程序暂停/恢复 - 因此它适用于在应用程序暂停时保存数据并在恢复时加载。您应该记住,当应用程序恢复时, OnNavigatedTo 未被调用。
以上是关于正常导航(前进)。如果您想填充上一页中的某些数据,那么您有几个选项:
请注意,前两种方法的缺点是应用程序在挂起后可能会崩溃。保存到文件可能会更好,想到需要更多的工作和正确的处理。
答案 1 :(得分:0)
- 首先创建一个类
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;