La navigazione di una App Windows Phone si implementa in maniera semplice ed intuitiva, somiglia infatti alla navigazione di un sito web. Supponiamo di avere una lista di elementi e vogliamo poter accedere ad una pagina di dettaglio per ciascuno di essi.

Nel MainPage.xaml definiremo una ListBox del tipo:
<ListBox Name="list" SelectionChanged="list_SelectionChanged">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <!-- controlli e binding -->
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>
Nel relativo file .cs possiamo gestire la navigazione nell'evento SelectionChanged:
private void list_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (list.SelectedIndex == -1) {
        return;
    }
 
    NavigationService.Navigate(new Uri("/Details.xaml?selectedItem=" + list.SelectedIndex, UriKind.Relative));
    list.SelectedIndex = -1;
}
Ora non resta che sovrascrivere l'evento NavigatedTo nel file Details.xaml.cs in questo modo:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
 
    string selectedItem;
    if (NavigationContext.QueryString.TryGetValue("selectedItem", out selectedItem))
    {
        int index;
        if (Int32.TryParse(selectedItem, out index))
        {
            // Successo
            return;
        }
    }
    // Gestione errori
}
comments powered by Disqus