Gestire la navigazione nelle applicazioni Silverlight per Windows Phone

di Daniele Bochicchio, in Windows Phone,

Silverlight for Windows Phone implementa il classico sistema di navigazione tipico delle applicazioni web: esiste una cronologia e ci si può spostare indietro, così da tornare alla pagina precedente, piuttosto che invocare una pagina su cui navigare.
Per navigare tra le pagine è necessario che prendiamo dimestichezza con i concetti di Frame e Page, implementati attraverso i controlli PhoneApplicationFrame e PhoneApplicationPage.
C'è una sola istanza di PhoneApplicationFrame per ogni applicazione, poiché questa è la classe responsabile di gestire lo spazio, occupato da system tray, application bar, oltre che dal contenuto vero e proprio della pagina. Quest'ultimo è a propria volta gestito attraverso la classe PhoneApplicationPage, che corrisponde ad ogni pagina all'interno del nostro frame.

La classe NavigationService espone diversi metodi, tra cui spiccano Navigate e GoBack. Nell'esempio gestiamo il click su un pulsante e portiamo a termine il relativo cambio di pagina:

private void Button1_Click(object sender, RoutedEventArgs e) 
{
  NavigationService.Navigate(new Uri("/Page2.xaml", UriKind.Relative));
}

È anche possibile inviare parametri alla pagina, sfruttando il classico sistema basato su querystring, previsto da Silverlight:

private void Button1_Click(object sender, RoutedEventArgs e) 
{
  NavigationService.Navigate(new Uri("/Page2.xaml?ID=5",
                             UriKind.Relative));
}

Per leggere queste informazioni in Page2.xaml, dovremo sfruttare la classe NavigationContext, che offre una proprietà QueryString che può tornare utile per questo scenario.
A tal proposito, la classe PhoneApplicationPage include un'infrastruttura minima per gestire la navigazione, attraverso i due metodi OnNavigatedTo e OnNavigatedFrom, che si verificano rispettivamente quando la pagina diventa quella attiva all'interno del PhoneApplicationFrame e quando smette di esserlo. Nel primo caso è possibile leggere le informazioni passate da una pagina chiamante, mentre nel secondo si possono, ad esempio, salvare tutti i dati prima di passare alla pagina successiva.

protected override void OnNavigatedTo(NavigationEventArgs  e)
{  
  base.OnNavigatedTo(e);
  string id= string.Empty;
  if (NavigationContext.QueryString.TryGetValue("ID", out id))
    TextBlock1.Text = id;
}

Queste classi consentono di gestire al meglio uno degli aspetti principali di un'applicazione per Windows Phone, quindi vanno gestiti di conseguenza.

Questo script è tratto dal libro 'Sviluppare applicazioni per Windows Phone':
http://books.aspitalia.com/Windows-Phone/

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi