Ответ 1
Способы передачи параметров
1. Использование строки запроса
Вы можете передавать параметры через строку запроса, используя этот метод, значит, вам нужно преобразовать ваши данные в строки и кодировать их URL. Вы должны использовать это только для передачи простых данных.
Навигация по странице:
page.NavigationService.Navigate(new Uri("/Views/Page.xaml?parameter=test", UriKind.Relative));
Страница назначения:
string parameter = string.Empty;
if (NavigationContext.QueryString.TryGetValue("parameter", out parameter)) {
this.label.Text = parameter;
}
2. Использование NavigationEventArgs
Навигация по странице:
page.NavigationService.Navigate(new Uri("/Views/Page.xaml?parameter=test", UriKind.Relative));
// and ..
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
// NavigationEventArgs returns destination page
Page destinationPage = e.Content as Page;
if (destinationPage != null) {
// Change property of destination page
destinationPage.PublicProperty = "String or object..";
}
}
Страница назначения:
// Just use the value of "PublicProperty"..
3. Использование ручной навигации
Навигация по странице:
page.NavigationService.Navigate(new Page("passing a string to the constructor"));
Страница назначения:
public Page(string value) {
// Use the value in the constructor...
}
Разница между Uri и ручной навигацией
Я думаю, что основное отличие здесь - жизненный цикл приложения. Страницы, созданные вручную, хранятся в памяти для целей навигации. Подробнее об этом здесь.
Передача сложных объектов
Вы можете использовать один или два метода для передачи сложных объектов (рекомендуется). Вы также можете добавить пользовательские свойства в класс Application
или сохранить данные в Application.Current.Properties
.