Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WP7: Pass parameter to new page?

In a Windows Phone 7 Silverlight application I call a new page using

NavigationService.Navigate(new Uri("/View/SecondPage.xaml", UriKind.Relative));

Now I want to pass parameters to the new page. I understand a simple parameter can be passed using:

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

and read in the new page using

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

For simple parameters this is ok, but how do I pass a list?
Complex objects?
Anything but simple values?

like image 928
Sam Avatar asked Nov 10 '10 10:11

Sam


2 Answers

In his book "Programming Windows Phone 7" (chapter 6, section 3, "Sharing Data Among Pages") Charles Petzold recommends properties in the App class (derived from Application). Every page has access to it via Application.Current. Also interesting is the dictionary PhoneApplicationService.Current.State. It's usefull for tombstoning. The whole chapter maybe interesting for reading.

like image 117
Lars Avatar answered Nov 08 '22 10:11

Lars


You should also look at MVVM pattern and the messenger class.

Here's some references:

MVVM Overview

MVVM Foundation Messenger

Good SO question on the messenger from MVVM Light

MVVM Light Blog

like image 44
Chris Nicol Avatar answered Nov 08 '22 09:11

Chris Nicol