[英]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.
}
几种选择:
secondpage.xaml?param1=abc123¶m2=<base64 data>
,而不是导航至secondpage.xaml
。 您可以通过覆盖onNavigatedTo
函数来获取导航参数,就像检查应用程序启动时所用的参数一样(但可能不在起始页上)。 请注意,这可能是Silverlight特定的。 我没有在非Silverlight应用程序中尝试过。 App
类(在App.xaml.cs
定义)中添加一个公共字段。 您可以在任何类中添加静态公共字段,并可以从中读取和写入。 全局变量被认为是错误的设计,但是将它们放在应该访问它们的特定类上是合理的。 请注意,有时可能在不同的线程上处理不同的页面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.