Cambiare la startup page nelle applicazioni Windows Phone con Caliburn

In un mio precedente post abbiamo visto come cambiare la pagina di startup di un progetto Windows Phone per poter decidere all’avvio della applicazione quale pagina aprire.

Nel mio caso era per visualizzare una pagina di mancata disponibilità della rete dati, ma le applicazioni possono essere molteplici.

Per la nuova versione della mia app (pensata espressamente per WP8) ho deciso di usare il framework Caliburn.Micro ispirato dai post del bravo e disponibilissimo Matteo.

Salto tutti i dettagli del setup di una app che utilizza Calibrun, perchè nel link qui sopra potete trovare tutte le informazioni necessarie. Occhiolino

La soluzione si è perfino semplificata:

- Nel bootstrapper dell’applicazione facciamo l’override della funzione CreatePhoneApplicationFrame

        protected override PhoneApplicationFrame CreatePhoneApplicationFrame()
        {
            var frame = new PhoneApplicationFrame { UriMapper = new AssociationUriMapper() };
            return frame;
        }

- Definiamo ora la classe AssociationUriMapper che deriva la classe base UriMapperBase

    public class AssociationUriMapper : UriMapperBase
    {
        public override Uri MapUri(Uri uri)
        {
            if (uri.OriginalString.Contains("AboutPageView"))
                return uri;
            
            return !PhoneUtilities.HasInternetConection ? new Uri("/Views/NoConnectionPageView.xaml", UriKind.Relative) : uri;
        }
    }

Questa classe semplicemente ritorna l’uri a seconda di alcune condizioni (nel mio caso la presenza o assenza di rete). Per qualche View è possibile saltare il controllo (ad esempio la pagina di about non necessitò di connettività)

Questa implementazione ha anche il vantaggio di funzionare per l’intera app (qualsiasi navigazione passa per il nostro UriMapper), per cui abbiamo centralizzato una gestione che prima era necessario applicare in ogni pagina.

Tag di Technorati: ,,

posted @ Monday, June 3, 2013 11:16 PM

Print
Comments have been closed on this topic.
«December»
SunMonTueWedThuFriSat
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234