2015-10-05 30 views
1

我有一个Windows Phone 8.1应用程序,我有两个页面显示数据。第一页有一个列表视图,显示来自sqlite数据库的所有数据,当用户点击列表视图中的一个项目时,第二个页面打开,列表视图包含有关数据库特定记录的更多详细信息。我的问题是如何使用C#在Windows Phone 8.1中实现这一点?如何在Windows Phone 8.1应用程序的两个页面之间传递数据?

回答

0

有几个选项:

  • 直接传递数据,你可以把它放在URI作为查询字符串参数(如网页URL)。因此,例如,您可以导航到secondpage.xaml?param1=abc123&param2=<base64 data>,而不是导航到secondpage.xaml。您可以通过覆盖onNavigatedTo函数来获取导航参数,与检查启动应用程序的参数(可能不在启动页面上)相同。请注意,这可能是Silverlight特有的;我没有用非Silverlight应用程序尝试过它。
  • 为了只是在应用程序周围传递数据,您可以使用任意数量的全局对象。您可以将公共字段添加到您从其他类读取和写入的App类(如App.xaml.cs中定义的)中。您可以在任何类中添加一个静态公共字段,并从中读取和写入。全局设计被认为是一个糟糕的设计,但是将它们放在应该访问它们的特定类上是合理的。请注意,有时可能会在不同的线程上处理不同的页面。
  • 使用持久性存储。您可以写入隔离的存储设置字典,或者只写出一个文件并让其他页面查找它。这可能是你试图达到的目标的矫枉过正,但是如果你想让应用程序的一部分记录来自摄像头的大量视频,并且另一部分处理它,这将是一个可行的解决方案。
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存取权限给它;

1

在第一页,你应该写这样的事情:

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

对于第二页,你应该覆盖的OnNavigatedTo(NavigationEventArgs E)。例如:

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