繁体   English   中英

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

[英]How to pass data between two pages in Windows Phone 8.1 application ?

我有一个Windows Phone 8.1应用程序,其中有两个页面显示数据。 第一个页面具有一个列表视图,显示来自sqlite数据库的所有数据,并且当用户点击列表视图中的一个项目时,第二个页面将打开一个列表视图,其中包含有关该数据库中特定记录的更多详细信息。 我的问题是如何使用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.taped访问它;

在第一页上,您应该这样写:

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

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

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

几种选择:

  • 要直接传递数据,您可以将其作为查询字符串参数(如网页URL)放入URI中。 因此,例如,您可以导航至secondpage.xaml?param1=abc123&param2=<base64 data> ,而不是导航至secondpage.xaml 您可以通过覆盖onNavigatedTo函数来获取导航参数,就像检查应用程序启动时所用的参数一样(但可能不在起始页上)。 请注意,这可能是Silverlight特定的。 我没有在非Silverlight应用程序中尝试过。
  • 通常,仅在应用程序周围传递数据,就可以使用任意数量的全局对象。 您可以向从其他类读取和写入的App类(在App.xaml.cs定义)中添加一个公共字段。 您可以在任何类中添加静态公共字段,并可以从中读取和写入。 全局变量被认为是错误的设计,但是将它们放在应该访问它们的特定类上是合理的。 请注意,有时可能在不同的线程上处理不同的页面。
  • 使用永久性存储。 您可以写入隔离的存储设置字典,也可以只写一个文件,然后让另一页查找它。 对于您要实现的目标来说,这可能是过高的选择,但是,例如,如果您想让应用程序的一部分记录来自摄像机的大量视频,而另一部分处理它,则这将是一个可行的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM