Panoramica delle topologie di navigazione
Questa panoramica offre un'introduzione alle topologie di spostamento in WPF. In seguito vengono illustrate tre topologie di navigazione comuni, con 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 contiene 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 accede sono identificate da URI (Uniform Resource Identifier) (vedere URI di 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 è possibile spostarsi tra le pagine. Questa particolare topologia di navigazione è adatta in scenari semplici, anche se la navigazione può richiedere topologie più complesse, alcune delle quali possono essere definite solo quando l'applicazione è in esecuzione.
Questo argomento illustra tre topologie di navigazione comuni: lineari fissi, gerarchici fissi e generati dinamicamente. Ogni topologia di spostamento viene illustrata con un esempio con un'interfaccia utente simile a quella illustrata nella figura seguente:
Topologie di navigazione strutturate
Esistono due tipi generali di topologie di navigazione:
topologia fissa: definita in fase di compilazione e non cambia in fase di esecuzione. Le topologie fisse sono utili per spostarsi attraverso una sequenza fissa di pagine in un ordine lineare o gerarchico.
topologia dinamica: definita in fase di esecuzione in base all'input raccolto dall'utente, dall'applicazione o dal sistema. Le topologie dinamiche sono utili quando le pagine possono essere spostate in sequenze diverse.
Anche se è possibile creare topologie di navigazione usando pagine, gli esempi usano funzioni di pagina perché forniscono supporto aggiuntivo che semplifica il supporto per il passaggio e la restituzione di dati nelle pagine di una topologia.
Spostamento su una topologia lineare fissa
Una topologia lineare fissa è analoga alla struttura di una procedura guidata con una o più pagine della procedura guidata che vengono seguite 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 lo spostamento su una topologia lineare fissa includono quanto segue:
Spostamento dalla pagina chiamante a una pagina di avvio che inizializza la procedura guidata e passa alla prima pagina della procedura guidata. Non è necessaria una pagina di avvio (un PageFunction<T>senza 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 guidata, in particolare se l'inizializzazione è complessa.
Gli utenti possono spostarsi tra le pagine usando i pulsanti Indietro e Avanti (o collegamenti ipertestuali).
Gli utenti possono spostarsi tra le pagine usando il journal.
Gli utenti possono annullare la procedura guidata da qualsiasi pagina della procedura guidata premendo un pulsante Annulla.
Gli utenti possono accettare la procedura guidata nell'ultima pagina della procedura guidata premendo un pulsante Fine.
Se una procedura guidata viene annullata, la procedura guidata restituisce un risultato appropriato e non restituisce dati.
Se un utente accetta una procedura guidata, la procedura guidata restituisce un risultato appropriato e restituisce i dati raccolti.
Al termine della procedura guidata (accettata o annullata), le pagine che la procedura guidata comprende vengono rimosse dal journal. In questo modo ogni istanza della procedura guidata viene isolata, evitando quindi potenziali anomalie di stato o dati.
Spostamento dinamico su 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 è nota come topologia gerarchica fissa e la sequenza in cui la gerarchia viene attraversata viene spesso determinata in fase di esecuzione dall'applicazione o dall'utente. In fase di esecuzione, ogni pagina della gerarchia che consente lo spostamento a due o più altre pagine raccoglie i dati necessari per determinare la pagina a cui passare. La figura seguente illustra una delle diverse sequenze di spostamento possibili in base alla figura precedente:
Anche se la sequenza in cui vengono spostate le pagine in una struttura gerarchica fissa viene determinata in fase di esecuzione, l'esperienza utente corrisponde all'esperienza utente per una topologia lineare fissa:
Spostamento dalla pagina chiamante a una pagina di avvio che inizializza la procedura guidata e passa alla prima pagina della procedura guidata. Non è necessaria una pagina di avvio (un PageFunction<T>senza 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 guidata, in particolare se l'inizializzazione è complessa.
Gli utenti possono spostarsi tra le pagine usando i pulsanti Indietro e Avanti (o collegamenti ipertestuali).
Gli utenti possono spostarsi tra le pagine usando il journal.
Gli utenti possono modificare la sequenza di navigazione se navigano indietro attraverso il diario.
Gli utenti possono annullare la procedura guidata da qualsiasi pagina della procedura guidata premendo un pulsante Annulla.
Gli utenti possono accettare la procedura guidata nell'ultima pagina della procedura guidata premendo un pulsante Fine.
Se una procedura guidata viene annullata, la procedura guidata fornisce un risultato adeguato e non restituisce dati.
Se un utente accetta una procedura guidata, la procedura guidata restituisce un risultato appropriato e restituisce i dati raccolti.
Al termine della procedura guidata (accettata o annullata), le pagine che la procedura guidata comprende vengono rimosse dal journal. In questo modo ogni istanza della procedura guidata viene isolata, evitando quindi potenziali anomalie di stato o dati.
Spostamento su una topologia generata dinamicamente
In alcune applicazioni, la sequenza in cui vengono spostate due o più pagine può essere determinata solo in fase di esecuzione, indipendentemente dall'utente, dall'applicazione o dai 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 è nota come topologia generata dinamicamente. Per l'utente, come per le altre topologie di navigazione, l'esperienza utente è identica a quella delle topologie precedenti:
Navigazione dalla pagina chiamante a una pagina di lancio che inizializza la procedura guidata e passa alla prima pagina della procedura guidata. Non è necessaria una pagina di avvio (un PageFunction<T>senza 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 guidata, in particolare se l'inizializzazione è complessa.
Gli utenti possono spostarsi tra le pagine usando i pulsanti Indietro e Avanti (o collegamenti ipertestuali).
Gli utenti possono spostarsi tra le pagine usando il journal.
Gli utenti possono annullare la procedura guidata da qualsiasi pagina della procedura guidata premendo un pulsante Annulla.
Gli utenti possono accettare la procedura guidata nell'ultima pagina della procedura guidata premendo un pulsante Fine.
Se una procedura guidata viene annullata, la procedura guidata restituisce un risultato appropriato e non restituisce dati.
Se un utente accetta una procedura guidata, la procedura guidata restituisce un risultato appropriato e restituisce i dati raccolti.
Al termine della procedura guidata (accettata o annullata), le pagine che la procedura guidata comprende vengono rimosse dal journal. In questo modo ogni istanza della procedura guidata viene isolata, evitando quindi potenziali anomalie di stato o dati.
Vedere anche
.NET Desktop feedback