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

C# 如何在Windows Phone 8.1应用程序中在两个页面之间传递数据?,c#,windows-phone,C#,Windows Phone,我有一个Windows phone 8.1应用程序,其中有两个页面显示数据。第一个页面有一个显示sqlite数据库中所有数据的listview,当用户点击listview中的一个项目时,第二个页面将打开一个listview,其中包含有关数据库中特定记录的更多详细信息。我的问题是如何在WindowsPhone8.1中使用c#实现这一点 几个选项: 要直接传递数据,可以将其作为查询字符串参数(如网页URL)放入URI中。因此,例如,不必导航到secondpage.xaml,您可以导航到second

我有一个Windows phone 8.1应用程序,其中有两个页面显示数据。第一个页面有一个显示sqlite数据库中所有数据的listview,当用户点击listview中的一个项目时,第二个页面将打开一个listview,其中包含有关数据库中特定记录的更多详细信息。我的问题是如何在WindowsPhone8.1中使用c#实现这一点

几个选项:

  • 要直接传递数据,可以将其作为查询字符串参数(如网页URL)放入URI中。因此,例如,不必导航到
    secondpage.xaml
    ,您可以导航到
    secondpage.xaml?param1=abc123¶m2=
    。您可以通过覆盖
    onNavigatedTo
    功能来获取导航参数,这与检查应用程序启动时使用的参数(但可能不是在起始页上)的操作相同。注意,这可能是Silverlight特有的;我还没有尝试过非Silverlight应用程序
  • 一般来说,要在应用程序中传递数据,可以使用任意数量的全局对象。您可以将公共字段添加到从其他类读取和写入的
    App
    类(定义见
    App.xaml.cs
    )。您可以在任何类中添加静态公共字段,并从中进行读写。global被认为是一种糟糕的设计,但是将它们粘贴在应该访问它们的特定类上是合理的。请注意,不同的页面有时可能在不同的线程上处理
  • 使用持久存储。您可以写入“独立存储设置”词典,或者只是写出一个文件,让另一个页面查找它。这对于你想要实现的目标来说可能有些过头了,但如果你想让应用程序的一部分从相机中录制大量视频,而另一部分处理视频,这将是一个可行的解决方案

在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);
    }


在第二页中,您可以通过FirstPage.taped访问它

在第一页,你应该这样写:

Frame.Navigate(typeof(SecondPage), someData);
对于第二页,您应该覆盖OnNavigatedTo(NavigationEventArgs e)。 例如:

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