WP7: передать параметр на новую страницу?

В приложении Silverlight для Windows Phone 7 я вызываю новую страницу, используя

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

Для простых параметров это нормально, но как передать список?
Комплексные объекты?
Все, кроме простых значений?

Ответ 1

В своей книге "Программирование Windows Phone 7" (глава 6, раздел 3 "Обмен данными между страницами" ) Чарльз Петцольд рекомендует свойства в класс App (полученный из Application). Каждая страница имеет доступ к ней через Application.Current. Также интересен словарь PhoneApplicationService.Current.State. Это полезно для гробницы. Вся глава может быть интересна для чтения.

Ответ 3

посмотрите, как я реализовал навигацию в PhoneCore Framework: Рамка для создания приложения WP7. Вскоре я построил навигационную службу поверх навигации WP7. Он использует настраиваемое сопоставление страниц и позволяет передавать пользовательские параметры для автоматического просмотра модели.

Ответ 4

Используйте глобальные переменные, создайте новый класс для GlobalVariables:

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

Затем вы можете получить доступ к классу глобальных переменных для разных страниц:

GlobalVariables.variable_name;

Ответ 5

Вы должны сохранить объект в IsolStorage.

Просто сериализуйте его в библиотеке Json.net и сохраните строку в IsolStorage. На следующей странице вы получите строку из IsolStorage и преобразуйте ее обратно в объект, который вы хотите, с помощью библиотеки json.net!