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

本文关键字:两个 之间 数据 Windows Phone 应用程序 | 更新日期: 2023-09-27 18:15:56

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

如何在Windows Phone 8.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。tape;

访问它

在第一页你应该这样写:

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

对于第二页,你应该重写OnNavigatedTo(NavigationEventArgs e)。例如:

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

几个选项:

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