WP7:将参数传递给新页面?

时间:2010-11-10 10:21:37

标签: windows-phone-7 parameter-passing

在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"]; 
} 

对于简单参数,这没关系,但如何传递列表呢? 复杂的物体?
除了简单的价值观之外还有什么?

5 个答案:

答案 0 :(得分:21)

在他的书"Programming Windows Phone 7"(第6章,第3节,“在页面中共享数据”)中,Charles Petzold推荐了App类中的属性(派生自Application)。每个页面都可以通过Application.Current访问它。字典PhoneApplicationService.Current.State也很有趣。这对墓碑很有用。整章可能对阅读很有意思。

答案 1 :(得分:2)

您还应该查看MVVM模式和信使类。

以下是一些参考资料:

MVVM Overview

MVVM Foundation Messenger

Good SO question on the messenger from MVVM Light

MVVM Light Blog

答案 2 :(得分:0)

看看我是如何在PhoneCore Framework中实现导航的:A framework for building of WP7 application。不久,我在WP7导航的基础上构建了我的导航服务。它使用自定义页面映射,并允许自定义参数传递给视图模型。

答案 3 :(得分:0)

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

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

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

GlobalVariables.variable_name;

答案 4 :(得分:-1)

您应该将对象保存到IsolatedStorage。

使用Json.net库进行序列化,并将字符串保存到IsolatedStorage。在下一页上从IsolatedStorage获取字符串并使用json.net库将其转换回您想要的对象!