Technology Experience
.NET World

Pivot, PivotItem e tomb-stoning: strano problema, qualcuno mi sa dire il perchè?

Sì, ehm, voglio dire, qualche problema c’è. Aprite Visual Studio 2010 e cominciate un nuovo progetto di tipo Windows Phone Application. Nei riferimenti aggiungete l’assembly Microsoft.Phone.Controls, in modo da poter utilizzare il controllo Pivot. Nella pagina MainPage.xaml, quella creata di default, cancellate tutto e fate in modo che il content sia il seguente:

<controls:Pivot x:Name="Pivot" >
    <controls:PivotItem Header="Item 1" />
    <controls:PivotItem Header="Item 2" />
    <controls:PivotItem Header="Item 3" />
    <controls:PivotItem Header="Item 4" />
    <controls:PivotItem Header="Item 5" />
</controls:Pivot>

 

E’ un semplice Pivot con 5 pagine PivotItem, identificabili dall’header che va da “Item 1” a “Item 5”. Ora supponiamo di voler gestire il tombstoning, ovvero se l’utente interrompe l’utilizzo dell’applicazione mentre si trova su ”Item 3”, quando la riprende deve ritornare su quella pagina. Idem ovviamente per le altre. Quindi:

PhoneApplicationService appStatus = PhoneApplicationService.Current;

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

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

    base.OnNavigatedTo(e);
}

 

Il tutto è ovviamente definito nel code-behind MainPage.xaml.cs.

Qualcuno mi sa dire perchè se mi trovo su: Item 1, Item 2 o Item 5 la procedura di tombstoning funziona correttamente,

mentre se mi trovo su Item 3 o Item 4 l’applicazione crasha inesorabilmente?

Per comodità, vi metto a disposizione il file zip con la soluzione VS2010 pronta da aprire e provare. Ma solo a me succede?

Sad smile

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.