C# 如何在Windows Phone 8.1应用程序中在两个页面之间传递数据?
我有一个Windows phone 8.1应用程序,其中有两个页面显示数据。第一个页面有一个显示sqlite数据库中所有数据的listview,当用户点击listview中的一个项目时,第二个页面将打开一个listview,其中包含有关数据库中特定记录的更多详细信息。我的问题是如何在WindowsPhone8.1中使用c#实现这一点 几个选项: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
- 要直接传递数据,可以将其作为查询字符串参数(如网页URL)放入URI中。因此,例如,不必导航到
,您可以导航到secondpage.xaml
。您可以通过覆盖secondpage.xaml?param1=abc123¶m2=
功能来获取导航参数,这与检查应用程序启动时使用的参数(但可能不是在起始页上)的操作相同。注意,这可能是Silverlight特有的;我还没有尝试过非Silverlight应用程序onNavigatedTo
- 一般来说,要在应用程序中传递数据,可以使用任意数量的全局对象。您可以将公共字段添加到从其他类读取和写入的
类(定义见App
)。您可以在任何类中添加静态公共字段,并从中进行读写。global被认为是一种糟糕的设计,但是将它们粘贴在应该访问它们的特定类上是合理的。请注意,不同的页面有时可能在不同的线程上处理App.xaml.cs
- 使用持久存储。您可以写入“独立存储设置”词典,或者只是写出一个文件,让另一个页面查找它。这对于你想要实现的目标来说可能有些过头了,但如果你想让应用程序的一部分从相机中录制大量视频,而另一部分处理视频,这将是一个可行的解决方案
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.
}