Ein integraler Bestandteil von Windows Phone ist der Zurück-Hardwareknopf auf dem Gerät. Damit können Endbenutzer jederzeit einen Schritt zurückgehen – ähnlich einem Browser. Auch die Implementierung dieser Funktionalität erinnert manche Entwickler sicherlich an die Webwelt. Eine typische Windows-Phone-Anwendung besteht aus mehreren Seiten, zu denen man mit einer URL navigieren kann. Jede Seite besteht aus einer .XAML-Datei für das Layout und einer zugehörigen .CS-Datei für den Code.
Von einer Seite zur nächsten navigieren
Um die Seitennavigation zu verwenden, gibt es auf jeder Seite die Eigenschaften NavigationService und NavigationContext. Listing 1 zeigt, wie Sie bei Button Click zu einer neuen Seite navigieren. Beachten Sie die Angabe von eigenen Query-String-Parametern im URL. Um die Zurück-Funktion kümmert sich das Betriebssystem von ganz alleine, die jeweils oberste Seite vom Navigations-Stack wird entfernt und die vorherige angezeigt.
Wann wird navigiert?
Durch das Überladen von vier Methoden können Sie Aktionen ausführen, vor oder nachdem von oder zu einer Seite navigiert wird:
- OnNavigatingTo
- OnNavigatedTo
- OnNavigatingFrom
- OnNavigatedFrom
In Listing 1 wird beim Navigieren auf eine Seite der übergebene Query-String-Wert „Name“ ausgelesen und in einer TextBox dargestellt.
NavigationService.Navigate(new Uri("/Page2.xaml?name=max", UriKind.Relative);//...protected override void OnNavigatedTo(NavigationEventArgs e){this.textBox1.Text = this.NavigationContext.QueryString["name"];}
In OnNavigatingFrom können Sie übrigens durch Angabe von e.Cancel=true das Verlassen der Seite verhindern – wenn z. B. Daten noch nicht gespeichert wurden.
Zurück-Knopf abfangen
Wollen Sie auf den Zurück-Knopf in applikationseigene Weise reagieren? Die ist dann nötig, wenn Sie zum Beispiel eine Applikation geschrieben haben, die noch innerhalb einer Seite Zurück-Funktionalität braucht (Navigation durch ein Panorama zum Beispiel). Durch Überladung der OnBackKeyPress-Methode einer Seite können Sie die eingebaute Zurück-Funktion verhindern und selbst auf den Knopfdruck reagieren (Listing 2 zeigt wie).
protected override void OnBackKeyPress(CancelEventArgs e){e.Cancel = true;// Eigener Code, der auf den Zurück-Knopf reagiert}
Übrigens: Für fertige Seitenübergangsanimationen werfen Sie einen Blick in das Silverlight Control Toolkit.
Fazit: Eine Phone-Applikation ist gleichsam wie eine Webseite aus einzelnen Seiten aufgebaut. Das Betriebssystem kümmert sich um die Navigation zwischen diesen Seiten.



