如何在Windows Phone 8.1应用程序中的两个页面之间传递数据?

时间:2015-10-05 08:32:11

标签: c# windows-phone

我有一个Windows Phone 8.1应用程序,其中有两个显示数据的页面。第一页有一个列表视图,显示来自sqlite数据库的所有数据,当用户点击列表视图中的一个项目时,第二个页面打开一个列表视图,其中包含有关该数据库中该特定记录的更多详细信息。我的问题是如何使用c#在Windows Phone 8.1中实现这一目标?

3 个答案:

答案 0 :(得分:1)

Windows Phone 8.1中的

有两种方法:

     void SelectionChanged(object sender, SelectionChangedEventArgs    e)
    {
      var list= sender as Listview;
      var taped=list.SelectedItem as Model;
      //here you send your parameter to the second page
      Frame.Navigate(Typeof(SecondPage),taped);
    }

    public static Model taped;
     void SelectionChanged(object sender, SelectionChangedEventArgs    e)
    {
      var list= sender as Listview;
      taped=list.SelectedItem as Model;


    }

,在SecondPage中,您可以通过FirstPage.taped访问它;

答案 1 :(得分:1)

在第一页上你应该写这样的东西:

Frame.Navigate(typeof(SecondPage), someData);

对于第二页,您应该覆盖OnNavigatedTo(NavigationEventArgs e)。 例如:

protected override void OnNavigatedTo( NavigationEventArgs e )
{
    MyData data = e.Parameter as MyData.
}

答案 2 :(得分:0)

有几个选择:

  • 要直接传递数据,您可以将其作为查询字符串参数(如网页网址)放在URI中。因此,例如,您可以导航到secondpage.xaml,而不是导航到secondpage.xaml?param1=abc123&param2=<base64 data>。您可以通过覆盖onNavigatedTo函数来获取导航参数,就像检查启动应用程序的参数一样(但不是,可能在开始页面上)。请注意,这可能是特定于Silverlight的;我还没有尝试使用非Silverlight应用程序。
  • 要在应用程序中传递数据,您可以使用任意数量的全局对象。您可以将公共字段添加到您从其他类读取和写入的App类(在App.xaml.cs中定义)。您可以在任何类中添加 static 公共字段,并从中进行读写。 Globals被认为是一个糟糕的设计,但将它们粘贴在应该访问它们的特定类上是合理的。请注意,有时可能会在不同的线程上处理不同的页面。
  • 使用持久存储。您可以写入隔离的存储设置字典,或者只写出一个文件并让其他页面查找它。对于你想要达到的目标而言,这可能有点过头了,但是如果你想让应用程序的一部分记录来自摄像机的大量视频,而另一部分处理它,那将是一个可行的解决方案。