Technology Experience
.NET World

Come ripristinare il PivotItem corretto dopo il tombstoning

Faccio il mea-culpa e correggo il tiro, in riferimento al mio post di ieri pomeriggio.

Il modo corretto di ripristinare il PivotItem dopo un tombstoning è quello di farlo nell’evento Loaded della Page.

Quindi:

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
    appStatus.State["PageIndex"] = this.Pivot.SelectedIndex;
    base.OnNavigatedFrom(e);
}

 

Qui salviamo nello stato dell’applicazione il SelectedIndex del Pivot. Quando si ritorna all’applicazione succede quanto segue:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    if (appStatus.State.ContainsKey("PageIndex"))
        pageIndex = (int)appStatus.State["PageIndex"];

    base.OnNavigatedTo(e);
}

 

Qui carichiamo la situazione salvata precedentemente. Notare che pageIndex è definita a livello di classe, ed in questa fase semplicemente ne carichiamo il valore. Dentro l’evento Loaded della Page andiamo a settare il PivotItem:

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
    if (pageIndex >= 0)
        this.Pivot.SelectedIndex = pageIndex;
}

 

Nell’evento Loaded siamo sicuri che la pagina sia stata interamente caricata, perciò non avremo problemi di alcun tipo.

Resta da capire perchè il codice descritto ieri si schianti solo con certi valori di SelectedIndex, e soprattutto perchè a run-time (in esecuzione senza breakpoint, tanto per capirci) vedo il controllo Pivot prendere il focus e poi…Boom! Mah!

Grazie al buon Gabriele che, nonostante non si stia occupando di sviluppo WP7, non ha perso il post dell’amico Matteo che spiegava questa cosa.

Send to Kindle

Igor Damiani

La sua passione per l'informatica nasce nella prima metà degli anni '80, quando suo padre acquistò un Texas Instruments TI-99. Da allora ha continuato a seguire l'evoluzione sia hardware che software avvenuta nel corso degli anni. E' un utente, un videogiocatore ed uno sviluppatore software a tempo pieno. Igor ha lavorato e lavora anche oggi con le più moderne tecnologie Microsoft per lo sviluppo di applicazioni: .NET Framework, XAML, Universal Windows Platform, su diverse piattaforme, tra cui spiccano Windows 10 piattaforme mobile. Numerose sono le app che Igor ha creato e pubblicato sul marketplace sotto il nome VivendoByte, suo personale marchio di fabbrica. Adora mantenere i contatti attraverso Twitter e soprattutto attraverso gli eventi delle community .NET.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.