Cenni preliminari sulle topologie di navigazione
Questa panoramica offre un'introduzione alle topologie di spostamento in WPF. Di seguito vengono analizzate tre topologie di navigazione comuni con i relativi esempi.
Nota
Prima di leggere questo argomento, è necessario avere familiarità con il concetto di spostamento strutturato in WPF usando le funzioni di pagina. Per altre informazioni su entrambi questi argomenti, vedere Cenni preliminari sulla navigazione strutturata.
Questo argomento include le sezioni seguenti:
Topologie di navigazione
In WPF, lo spostamento è in genere costituito da pagine (Page) con collegamenti ipertestuali (Hyperlink) che passano ad altre pagine quando si fa clic. Le pagine a cui si passa sono identificate da URI (Uniform Resource Identifier) (vedere URI pack in WPF). Si consideri l'esempio semplice seguente che mostra pagine, collegamenti ipertestuali e URI (Uniform Resource Identifier):
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" WindowTitle="Page1">
<Hyperlink NavigateUri="Page2.xaml">Navigate to Page2</Hyperlink>
</Page>
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" WindowTitle="Page2">
<Hyperlink NavigateUri="Page1.xaml">Navigate to Page1</Hyperlink>
</Page>
Queste pagine sono disposte in una topologia di navigazione la cui struttura è determinata da come ci si sposta da una pagina all'altra. Questa particolare topologia di navigazione è adatta in scenari semplici. La navigazione può tuttavia richiedere topologie più complesse, alcune delle quali possono essere definite solo quando un'applicazione è in esecuzione.
Questo argomento illustra tre topologie di navigazione comuni: lineare fissa, gerarchica fissa e generata dinamicamente. Ogni topologia di spostamento viene illustrata con un esempio con un'interfaccia utente simile a quella illustrata nella figura seguente:
Topologie di navigazione strutturata
Vi sono due topologie principali di navigazione:
Topologia fissa: è definita in fase di compilazione e non viene modificata in fase di esecuzione. Le topologie fisse sono utili per la navigazione in una sequenza fissa di pagine in un ordine lineare o gerarchico.
Topologia dinamica: è definita in fase di esecuzione in base agli input raccolti dall'utente, dall'applicazione o dal sistema. Le topologie dinamiche sono utili quando è possibile spostarsi sulle pagine in sequenze diverse.
Sebbene sia possibile creare topologie di navigazione usando le pagine, gli esempi usano funzioni di pagina poiché questi offrono un supporto aggiuntivo che semplifica il passaggio e la restituzione dei dati tramite le pagine di una topologia.
Navigazione in una topologia lineare fissa
Una topologia lineare fissa è analoga alla struttura di una procedura guidata con una o più pagine in cui ci si sposta in una sequenza fissa. La figura seguente illustra la struttura generale e il flusso di una procedura guidata con una topologia lineare fissa:
I comportamenti tipici per la navigazione in una topologia lineare fissa includono quanto segue:
Navigazione dalla pagina chiamante a una pagina di avvio che inizializza la procedura guidata e porta alla prima pagina di questa. Non è necessaria una pagina di avvio (senza PageFunction<T>interfaccia utente), perché una pagina chiamante può chiamare direttamente la prima pagina della procedura guidata. L'uso di una pagina di avvio può tuttavia semplificare l'inizializzazione della procedura guidata, in particolare se questa è complessa.
Gli utenti possono spostarsi tra le pagine usando i pulsanti Avanti e Indietro (o i collegamenti ipertestuali).
Gli utenti possono spostarsi tra pagine usando il journal.
Gli utenti possono annullare la procedura guidata da qualsiasi pagina di questa premendo il pulsante Annulla.
Gli utenti possono accettare la procedura guidata all'ultima pagina premendo un pulsante Fine.
Se una procedura guidata viene annullata, questa restituisce un risultato appropriato e non restituisce alcun dato.
Se un utente accetta una procedura guidata, questa restituisce un risultato appropriato e restituisce i dati raccolti.
Al completamento della procedura guidata (accettata o annullata), le pagine incluse nella procedura guidata vengono rimosse dal journal. In questo modo ogni istanza della procedura guidata viene mantenuta isolata, per evitare potenziali anomalie di dati o stato.
Navigazione dinamica in una topologia gerarchica fissa
In alcune applicazioni, le pagine consentono di spostarsi su due o più altre pagine, come illustrato nella figura seguente:
Questa struttura è detta topologia gerarchica fissa e la sequenza in cui viene attraversata è spesso determinata in fase di esecuzione dall'applicazione o dall'utente. In fase di esecuzione, ogni pagina della gerarchia che consente di spostarsi su due o più altre pagine raccoglie i dati richiesti per determinare su quale pagina spostarsi. La figura seguente illustra una delle diverse sequenze di spostamento possibili in base alla figura precedente:
Anche se la sequenza di navigazione delle pagine in una struttura gerarchica fissa è determinata in fase di esecuzione, l'esperienza utente è la stessa di una topologia lineare fissa:
Navigazione dalla pagina chiamante a una pagina di avvio che inizializza la procedura guidata e porta alla prima pagina di questa. Non è necessaria una pagina di avvio (senza PageFunction<T>interfaccia utente), perché una pagina chiamante può chiamare direttamente la prima pagina della procedura guidata. L'uso di una pagina di avvio può tuttavia semplificare l'inizializzazione della procedura guidata, in particolare se questa è complessa.
Gli utenti possono spostarsi tra le pagine usando i pulsanti Avanti e Indietro (o i collegamenti ipertestuali).
Gli utenti possono spostarsi tra pagine usando il journal.
Gli utenti possono modificare la sequenza di navigazione se tornano indietro tramite il journal.
Gli utenti possono annullare la procedura guidata da qualsiasi pagina di questa premendo il pulsante Annulla.
Gli utenti possono accettare la procedura guidata all'ultima pagina premendo un pulsante Fine.
Se una procedura guidata viene annullata, questa restituisce un risultato appropriato e non restituisce alcun dato.
Se un utente accetta una procedura guidata, questa restituisce un risultato appropriato e restituisce i dati raccolti.
Al completamento della procedura guidata (accettata o annullata), le pagine incluse nella procedura guidata vengono rimosse dal journal. In questo modo ogni istanza della procedura guidata viene mantenuta isolata, per evitare potenziali anomalie di dati o stato.
Navigazione in una topologia generata dinamicamente
In alcune applicazioni la sequenza di navigazione di due o più pagine può essere determinata solo in fase di esecuzione dall'utente, dall'applicazione o da dati esterni. La figura seguente illustra un set di pagine con una sequenza di navigazione non determinita:
La figura seguente illustra una sequenza di navigazione scelta dall'utente in fase di esecuzione:
La sequenza di navigazione è indicata come topologia generata dinamicamente. L'esperienza utente è analoga alle topologie di navigazione precedenti:
Navigazione dalla pagina chiamante a una pagina di avvio che inizializza la procedura guidata e porta alla prima pagina di questa. Non è necessaria una pagina di avvio (senza PageFunction<T>interfaccia utente), perché una pagina chiamante può chiamare direttamente la prima pagina della procedura guidata. L'uso di una pagina di avvio può tuttavia semplificare l'inizializzazione della procedura guidata, in particolare se questa è complessa.
Gli utenti possono spostarsi tra le pagine usando i pulsanti Avanti e Indietro (o i collegamenti ipertestuali).
Gli utenti possono spostarsi tra pagine usando il journal.
Gli utenti possono annullare la procedura guidata da qualsiasi pagina di questa premendo il pulsante Annulla.
Gli utenti possono accettare la procedura guidata all'ultima pagina premendo un pulsante Fine.
Se una procedura guidata viene annullata, questa restituisce un risultato appropriato e non restituisce alcun dato.
Se un utente accetta una procedura guidata, questa restituisce un risultato appropriato e restituisce i dati raccolti.
Al completamento della procedura guidata (accettata o annullata), le pagine incluse nella procedura guidata vengono rimosse dal journal. In questo modo ogni istanza della procedura guidata viene mantenuta isolata, per evitare potenziali anomalie di dati o stato.
Vedi anche
.NET Desktop feedback