Des questions similaires ont été posées auparavant, mais cette question vise à explorer plus d'options et la capacité de passer des objets complexes.
La question est de savoir comment passer les paramètres mais cela doit vraiment être divisé en trois parties.
Exemple de navigation Uri
page.NavigationService.Navigate(new Uri("/Views/Page.xaml", UriKind.Relative));
Exemple de navigation manuelle
page.NavigationService.Navigate(new Page());
La réponse à cette question s'applique à WP7, silverlight, WPF et Windows 8.
Remarque: il existe une différence entre Silverlight et Windows8
1. Utilisation de la chaîne de requête
Vous pouvez passer des paramètres à travers la chaîne de requête, en utilisant cette méthode, vous devez convertir vos données en chaînes et les coder par URL. Vous ne devez l'utiliser que pour transmettre des données simples.
Page de navigation:
page.NavigationService.Navigate(new Uri("/Views/Page.xaml?parameter=test", UriKind.Relative));
Page de destination:
string parameter = string.Empty;
if (NavigationContext.QueryString.TryGetValue("parameter", out parameter)) {
this.label.Text = parameter;
}
2. Utilisation de NavigationEventArgs
Page de navigation:
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..";
}
}
Page de destination:
// Just use the value of "PublicProperty"..
3. Utilisation de la navigation manuelle
Page de navigation:
page.NavigationService.Navigate(new Page("passing a string to the constructor"));
Page de destination:
public Page(string value) {
// Use the value in the constructor...
}
Je pense que la principale différence ici est le cycle de vie de l'application. Les pages créées manuellement sont conservées en mémoire pour des raisons de navigation. En savoir plus ici .
Vous pouvez utiliser la méthode un ou deux pour passer des objets complexes (recommandé). Vous pouvez également ajouter des propriétés personnalisées à la classe Application
ou stocker des données dans Application.Current.Properties
.