WP7:如何向新页面传递参数?

23
在 Windows Phone 7 Silverlight 应用程序中,我使用以下方法调用一个新页面:
NavigationService.Navigate(new Uri("/View/SecondPage.xaml", UriKind.Relative));

现在我想要向新页面传递参数。我知道可以使用以下方式传递一个简单的参数:

NavigationService.Navigate(new Uri("/View/TilgungsratePage.xaml?id=4711", UriKind.Relative));

使用以下方法在新页面中阅读:

protected override void OnNavigatedTo(Microsoft.Phone.Navigation.PhoneNavigationEventArgs e) 
{ 
    base.OnNavigatedTo(e); 
    String id = NavigationContext.QueryString["id"]; 
} 

对于简单的参数,这样做是可以的,但是如何传递一个列表?
复杂对象?
除了简单值之外的任何东西?


请注意查看这篇文章: WP7主详情导航使用存储库模式 - Kate Brown
1
请查看此链接上的最后一个方法:http://www.c-sharpcorner.com/UploadFile/deepak.sharma00/different-ways-of-passing-values-between-windows-phone-7-pag/ - Daniel Little
请看这个问题:https://dev59.com/b2cs5IYBdhLWcg3w-YlD - Daniel Little
5个回答

21

在他的书《Programming Windows Phone 7》第6章第3节“在页面之间共享数据”中,Charles Petzold推荐使用App类(派生自Application)中的属性。每个页面可以通过Application.Current访问它。另一个有趣的字典是PhoneApplicationService.Current.State,它对于保存应用程序状态非常有用。整个章节可能值得一读。


如果你不想要全局状态,还有其他方法。https://dev59.com/b2cs5IYBdhLWcg3w-YlD - Daniel Little

2

0

使用全局变量,为全局变量创建一个新类:

public static class GlobalVariables
{
   public static string my_string = "";
   public static int my_int = -1;
}

然后您可以访问不同页面的全局变量类:

GlobalVariables.variable_name;

0

来看看我在PhoneCore Framework中如何实现导航:用于构建WP7应用程序的框架。简而言之,我基于WP7导航构建了我的导航服务。它使用自定义页面映射,并允许自动传递自定义参数到视图模型。


-1

你应该将对象保存到独立存储中。

使用Json.net库对其进行序列化,并将字符串保存到独立存储中。在下一页中,从独立存储中获取字符串,并使用json.net库将其转换回所需的对象!


我认为这样做有些过度,只是为了在视图之间传递数据。将数据放入应用程序对象中会更好。 - Nathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接