WinRT introduce un nuovo meccanismo di navigazione, simile a quello di Windows Phone, per navigare tra le varie pagine dell'applicazione: in pratica, ogni applicazione è dotata, un po' come un browser, di uno stack di navigazione, da cui è possibile andare avanti, navigando verso specifiche risorse, oltre che ritornare indietro.
In WinRT, la navigazione agisce indicando il tipo relativo alla View, quindi il tipico codice necessario a navigare da una pagina fa uso del Frame (il contenitore della view) e del suo metodo Navigate, come in questo esempio:
this.Frame.Navigate(typeof(GroupDetailPage), ((NewsGroup)group).UniqueId);
Il primo parametro indica il tipo relativo alla view, mentre il secondo il parametro da passare. Successivamente, sarà possibile accedere al parametro all'interno della pagina, con un codice molto simile a questo, preso dal template di default di Visual Studio, che astrae un po' delle complessità nascosta:
protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
{
int id = Convert.ToInt32(navigationParameter);
}
In realtà, se si opta per non usare il template predefinito, è sufficiente sovrascrivere il metodo OnNavigatedTo, per accedere ai parametri di navigazione grazie al tipo NavigationEventArgs, passato come parametro.
In generale, il meccanismo di navigazione è molto semplice e intutivo, ad esempio il metodo GoBack ci consente di tornare indietro nello stack.
In alcuni scenari, però, questo meccanismo può sembrare poco flessibile. Supponiamo di avere un servizio di configurazione delle sezioni che è stato pensato per indicare l'URL delle pagine, anziché il tipo: in questo caso occorre apportare delle modifiche per tenere conto di questo aspetto. Si tratta di andare a recuperare il tipo in maniera corretta, grazie all'uso delle classi offerte dal .NET Framework, che consentono di ricostruire la definizione del tipo in maniera dinamica:
string ns = App.Current.GetType().Namespace; string className = "GroupDetailPage"; // supponiamo arrivi da un servizio di configurazione string id = "15"; // arriva da un servizio esterno this.Frame.Navigate(Type.GetType(ns + "." + className), id);
Grazie a questo codice diventerà molto semplice adattare la navigazione esisente, perché funzioni anche in presenza di percorsi che arrivano da remoto, adattandoci alle necessità di WinRT.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Rendere le variabili read-only in una pipeline di Azure DevOps
Anonimizzare i dati sensibili nei log di Azure Front Door
Gestire progetti NPM in .NET Aspire
Managed deployment strategy in Azure DevOps
Utilizzare Intersect e Except per filtrare set di dati in TSql
Esporre un server MCP con Azure API Management
Creare agenti facilmente con Azure AI Agent Service
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Fornire parametri ad un Web component HTML
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Keynote .NET Conference Italia 2025
Utilizzare DeepSeek R1 con Azure AI
I più letti di oggi
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Le DirectInk API nella Universal Windows Platform
- Gli oggetti CallOut di Expression Blend 4.0
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Sfruttare una CDN con i bundle di ASP.NET


