【发布时间】:2015-10-06 13:53:22
【问题描述】:
我有一个 Windows phone 8.1 应用程序,其中有两个页面显示数据。第一个页面有一个列表视图,显示来自 sqlite 数据库的所有数据,当用户点击列表视图中的一个项目时,第二个页面打开一个列表视图,其中包含有关数据库中该特定记录的更多详细信息。我的问题是如何使用 c# 在 Windows Phone 8.1 中实现这一点?
【问题讨论】:
标签: c# windows-phone
我有一个 Windows phone 8.1 应用程序,其中有两个页面显示数据。第一个页面有一个列表视图,显示来自 sqlite 数据库的所有数据,当用户点击列表视图中的一个项目时,第二个页面打开一个列表视图,其中包含有关数据库中该特定记录的更多详细信息。我的问题是如何使用 c# 在 Windows Phone 8.1 中实现这一点?
【问题讨论】:
标签: c# windows-phone
在 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&param2=<base64 data>,而不是导航到secondpage.xaml。您可以通过覆盖onNavigatedTo 函数来获取导航参数,就像检查应用程序启动时使用的参数一样(但可能不是在起始页上)。请注意,这可能是 Silverlight 特定的;我没有在非 Silverlight 应用中尝试过。App 类(如App.xaml.cs 中定义)。您可以在任何类中添加 static 公共字段,并从中读取和写入。全局变量被认为是一个糟糕的设计,但将它们粘贴在应该访问它们的特定类上是合理的。请注意,有时可能会在不同的线程上处理不同的页面。【讨论】: