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
. Это полезно для гробницы. Вся глава может быть интересна для чтения.
Ответ 2
Вы также должны посмотреть на шаблон MVVM и класс мессенджера.
Вот некоторые ссылки:
Обзор MVVM
MVVM Foundation Messenger
Хороший вопрос SO о посланнике от MVVM Light
MVVM Light Blog
Ответ 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!