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
Recuperare gli audit log in Azure DevOps
Eliminare record doppi in Sql Server
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Dallo sviluppo locale ad Azure con .NET Aspire
Selettore CSS :has() e i suoi casi d'uso avanzati
Utilizzare WhenEach per processare i risultati di una lista di task
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Testare il failover sulle region in Azure Storage
Gestire progetti .NET + React in .NET Aspire
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Creare una libreria CSS universale: Nav menu
Ottimizzare le pull con Artifact Cache di Azure Container Registry


