Le applicazioni Windows Phone riprendono il modello di navigazione tra le pagine introdotto da Silverlight: l'utente può visualizzare il contenuto delle pagine e navigante tra esse, come se fosse in un browser.
La corrispondenza tra l'Uri e il file fisico, ovvero la pagina XAML, avviene mediante un componente particolare, chiamato UriMapper.
Ci sono casi, però, in cui realizzarne un UriMapper custom è indispensabile: ad esempio, quando dobbiamo fornire la nostra logica di rooting ed indirizzare l'utente a pagine differenti, in base ad un parametro presente nell'Uri.
Creare un UriMapper è semplicissimo: ci basta estendere la classe UriMapperBase.
class MyUriMapper : UriMapperBase { private string tempUri; public override Uri MapUri(Uri uri) { tempUri = uri.ToString(); // controllo il contenuto dell?uri if (tempUri.Contains("ViewfinderLaunch")) { // restituisco l?uri appropriato return new Uri("/myView.xaml", UriKind.Relative); } // altrimenti non faccio nessun cambiamento return uri; } }
Creata la classe, dobbiamo eseguire l'ovveride del motodo MapUri. Il codice all'intero del metodo è semplice: recuperato l'Uri, controlliamo il contenuto, se utile all'applicazione, e modifichiamo l'Uri effettivamente restituito.
Creata la classe, non ci resta che modificare il file App.xaml.cs. Dobbiamo identificare la parte di inizializzazione e aggiungere la seguente riga:
RootFrame.UriMapper = new MyUriMapper();
Personalizzare il rooting degli Uri ci permette di controllare in modo semplice ed efficace le pagine visualizzate dall'applicazione, oltre a gestire scenari in cui cambiamo nome ad una pagina e vogliamo continuare a mantenere i meccanismi di navigazione (ad esempio, perché gli Uri arrivano da notifiche di tipo push).
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Utilizzare Azure Cosmos DB con i vettori
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Referenziare un @layer più alto in CSS
Generare token per autenicarsi sulle API di GitHub
Gestione dell'annidamento delle regole dei layer in CSS
Creazione di componenti personalizzati in React.js con Tailwind CSS
Recuperare App Service cancellati su Azure
Cancellare una run di un workflow di GitHub
Implementare l'infinite scroll con QuickGrid in Blazor Server
Miglioramenti nell'accessibilità con Angular CDK
Come EF 8 ha ottimizzato le query che usano il metodo Contains
I più letti di oggi
- La navigazione tra le pagine in Windows Phone 8.1
- Salvare in maniera sicura dati sensibili nelle Universal App con il Credential Locker
- Canary deployment con le pipeline YAML di Azure DevOps
- Registrare un applicazione per gestire l'auto upload in Windows Phone 8
- Tool per amministrare blob, queue e table di Windows Azure
- Creare un feed NuGet privato
- Avviare la mappa in modalità navigazione in Windows Phone 8
- Utilizzare Bootstrap per mostrare dei popup accanto a un controllo
- Building modern web apps with Blazor
- Adattare l'UI a risoluzioni differenti in Windows Phone 8.1