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