Un piccolo serpente ci conduce attraverso le principali caratteristiche del Windows Phone 7
Introduzione Core UI & Design Conclusione Premi Discussioni
Marcosroom.it Didatticando

Navigazione

Se sei un "Silverlighter", il concetto di navigazione non dovrebbe essere nuovo per te, ma una piccola ripassata non fa mai male, giusto?

Comunque, cominciamo dell'inizio.

Immagina si utilizzare il browser: navighi attraverso link per visitare le pagine. Quando ti sei stancato della pagina corrente, o hai commesso un errore, puoi premere il pulsante "Indietro", e vieni magicamente riportato alla pagina precedente. L'idea è la stessa per il Windows Phone 7:
usi le tue applicazioni, ma devi anche essere in grado di tornare alla precedente, solo premendo il pulsante "Indietro".

Non spaventarti! Non è così difficile! La maggior parte del lavoro è già fatto dal sistema: devi solo implementare la navigazione "in avanti". Quando vuoi cambiare pagina, è sufficiente chiamare il metodo Navigate della classe NavigationService (ne puoi ottenere un'istanza accedendo all'omonima proprietà della Page corrente); il parametro è l'Uri che punta alla pagina successiva.

public partial class MainPage : PhoneApplicationPage
{
    // Costruttore
    public MainPage()
    {
        InitializeComponent();
        btnNewGame.Click += BtnNewGame_Click;
    }

    private void BtnNewGame_Click(object sender, RoutedEventArgs e) {
        this.NavigationService.Navigate(new Uri("/MyApp;component/Page2.xaml", UriKind.RelativeOrAbsolute));
    }

}

Finito. Non devi fare nient'altro: l'azione "Indietro" è gestita automaticamente dal sistema. Ovviamente, puoi gestire questo evento e modificarne il comportamento.

public partial class MainPage : PhoneApplicationPage
{
    // Costruttore
    public MainPage()
    {
        InitializeComponent();
        btnNewGame.Click += BtnNewGame_Click;
        BackKeyPress += new EventHandler<System.ComponentModel.CancelEventArgs>(MainPage_BackKeyPress);
    }

    void MainPage_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
    {
        var msg = MessageBox.Show("Sicuro di voler tornare indietro?", "", MessageBoxButton.OKCancel);
        if (msg == MessageBoxResult.Cancel)
            e.Cancel = true;
    }

    private void BtnNewGame_Click(object sender, RoutedEventArgs e) {
        this.NavigationService.Navigate(new Uri("/MyApp;component/Page2.xaml", UriKind.RelativeOrAbsolute));
    }

}

In questo caso, l'unico cambiamento che ho apportato è una message box che chiede all'utente se vuole davvero tornare indietro; se la risposta è "ok", non accade nulla è la pagina cambia, altrimenti, annulliamo l'evento utilizzando e.Cancel = true, e l'azione viene annullata.

 

Condividi
Indietro Tutti i webmaster che volessero segnalare, non copiare,
il contenuto di questa pagina sul proprio sito, possono farlo liberamente.
E' gradito un preavviso tramite mail all'autore e l'iserimento,
nella pagina di citazione, di un link verso la pagina corrente.
© Copyright    Marco's Room
Avanti
Download SnakeMobile

Scaricato 115 volte

Navigazione Transizioni Pulsante rotondo luminoso Trigger Un piccolo ripasso di matematica Selettore circolare Isolated storage: file e impostazioni Impostazioni Build action: Content o Resource? Audio & XNA