Facendo seguito all'articolo sulla navigazione, oggi spiegheremo come preservare lo stato di una pagina.

Dopo la disattivazione di una App (l'utente preme il tasto super) può capitare che Windows Phone, per liberare memoria, metta l'applicazione nello stato chiamato "Tombstoned". In questo stato la nostra app non viene preservata, quindi il resume andrà fatto manualmente.

La pagina di nostro interesse è App.xaml.cs, dove vengono chiamati i vari eventi, ed in particolare la funzione:
 private void Application_Activated(object sender, ActivatedEventArgs e)
 
Innanzitutto controlliamo che lo stato non sia stato salvato:
if (!e.IsApplicationInstancePreserved)
 
A questo punto non resta che recuperare lo stato opportunamente salvato prima della disattivazione, fare qualche controllo e ripristinare la nostra App.
if (PhoneApplicationService.Current.State.ContainsKey("SelectedItem"))
                {
                    int selectedItem = (int)PhoneApplicationService.Current.State["SelectedItem"];
                    if (selectedItem != -1)
                    {
                        RootFrame.Navigate(new Uri("/Details.xaml?selectedItem=" + selectedItem, UriKind.Relative));
                    }
                }
 
Per poter testare in maniera efficace questa situazione, è necessaro spuntare la checkbox "Tombstone upon deactivation while debugging" nelle proprietà del progetto.
 
comments powered by Disqus