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).
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