lunedì 16 gennaio 2012

UriMapper in Windows Phone

In un precedente post su Estensibilità ricerca in Windows Phone 7 , un UriMapper è stato utilizzato per tradurre l'URI lancio invocato da ricerca Bing in un MappedUri, in questo caso, una pagina all'interno dell'applicazione Windows Phone.In questo articolo andremo a vedere come utilizzare una UriMapper per aiutare a strutturare e navigare all'interno dell'applicazione Windows Phone. Come un ripasso, ecco il UriMapper abbiamo definito nel App.xaml, e come è stato collegato al PhoneApplicationFrame nel file App.xaml.cs. 
App.xaml
<Application.Resources>
    <uriMapper:UriMapper x:Key="UriMapper">
            <UriMapper: UriMapping Uri = "/ SearchExtras"
                            MappedUri = "/ MainPage.xaml" />
    </ UriMapper: UriMapper>
</ Application.Resources>

App.xaml.cs
RootFrame = new PhoneApplicationFrame () {
                                UriMapper = Risorse ["UriMapper"] come UriMapper
                            };
Stiamo per iniziare cambiando il UriMapping al seguente:
<uriMapper:UriMapping Uri="/{Page}" MappedUri="/{Page}Page.xaml" />
Questa mappatura sarà tradurre qualsiasi URI che inizia con "/" aggiungendo il suffisso "Page.xaml". Ciò presuppone che tutte le pagine all'interno della nostra applicazione si chiuderà con "Page.xaml", ma significa che invece di navigare a "/ SecondPage.xaml", si può invece navigare solo "/ secondo".
Questo diventa utile se in seguito si decide che tutte le nostre pagine saranno in una cartella denominata "Pagine". In precedenza, avrebbe dovuto cercare attraverso l'intera applicazione alla ricerca di qualsiasi Naviga metodi e modificare l'URI per includere il prefisso "/ Pagine". Utilizzando UriMapping, tutto quello che dovete fare è cambiare la mappatura di includere il prefisso.
<uriMapper:UriMapping Uri="/{Page}" MappedUri="/Pages/{Page}Page.xaml" />
Come applicazione di Windows Phone cresce, si può decidere di rompere la vostra applicazione fino in assembly separati. In questo caso, è possibile ancora utilizzare un UriMapping per individuare la pagina a cui l'utente sta navigando. Per esempio, la mappatura seguenti individuare il MySatellitePage.xaml, che è in un assembly denominato Satellite:
<UriMapper: UriMapping Uri = "/ MySatellite" 
                      MappedUri = "/ satellite; componente / Pages / MySatellitePage.xaml" />
Deep linking
Un altro luogo dove l'uso di un UriMapping è importante è quando si utilizza il deep linking al fine di indirizzare gli utenti a una posizione specifica all'interno dell'applicazione. Questo può essere da un Tile Live (come determinato dal URI specificato durante la creazione della piastrella), o da una notifica Toast (l'elemento Param determina l'URI all'interno dell'applicazione per essere navigato a quando l'utente seleziona il brindisi).
L'approccio più semplice è di utilizzare l'URI della pagina che si desidera avviare (per esempio, "/ MyLaunchPage.xaml").Tuttavia, questo introduce un forte accoppiamento tra la struttura delle applicazioni e le notifiche inviate dal server. Invece, si può aggiungere un UriMapping simile al seguente, che mappa un URI "/ Toast" attraverso la pagina di lancio:
<UriMapper: UriMapping Uri = "/ Toast" 
                      MappedUri = "/ MyLaunchPage.xaml" />
Ora, se abbiamo bisogno di cambiare la struttura dell'applicazione, possiamo farlo facilmente aggiornando la mappatura. Senza la UriMapping avremmo dovuto aggiornare sia l'applicazione Windows Phone e il codice del server, e garantire che sono entrambi aggiornati allo stesso tempo - un compito quasi impossibile.
Noterete che non abbiamo specificato alcun parametro query in qualsiasi mapping dichiarato. Questo perché ci vengono mappati automaticamente di fronte alla URI al MappedUri. Nel caso del UriMapping scorso, per esempio, un URI "/ Toast? CustomerId = 1234" avranno mappato "/ MyLaunchPage.xaml? CustomerId = 1234".
Ho dimostrato un certo numero di scenari in cui una UriMapper può essere utilizzato per migliorare la navigazione e la struttura della vostra applicazione Windows Phone. Imparare ad usare questo potente strumento, e sarete scrivere codice più efficiente prima di conoscerla.

Nessun commento:

Posta un commento