Cenni preliminari sulle topologie di navigazione
In questi cenni preliminari viene fornita un'introduzione alle topologie di spostamento in WPF. Di seguito vengono analizzate tre topologie di spostamento comuni, con i relativi esempi.
Nota |
---|
Prima di leggere questo argomento, è importante conoscere il concetto di spostamento strutturato in WPF tramite funzioni di pagina.Per ulteriori informazioni su entrambi gli argomenti, vedere Cenni preliminari sulla navigazione strutturata. |
Di seguito sono elencate le diverse sezioni di questo argomento:
Topologie di spostamento
Topologie di spostamento strutturate
Spostamento in una topologia lineare fissa
Spostamento dinamico in una topologia gerarchica fissa
Spostamento in una topologia generata dinamicamente
Topologie di spostamento
In WPF, lo spostamento viene effettuato in genere in pagine (Page) con collegamenti ipertestuali (Hyperlink) che consentono di passare ad altre pagine quando si fa clic su di essi. Le pagine in cui ci si sposta sono identificate da uniform resource identifiers (URIs) (vedere URI di tipo pack in WPF). Nel semplice esempio riportato di seguito vengono illustrate pagine, collegamenti ipertestuali e uniform resource identifiers (URIs):
<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" WindowTitle="Page1">
<Hyperlink NavigateUri="Page2.xaml">Navigate to Page2</Hyperlink>
</Page>
<Page xmlns="https://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 spostamento la cui struttura è determinata dalla modalità di spostamento tra le pagine. Questa particolare topologia di spostamento è adatta a scenari semplici, sebbene lo spostamento possa richiedere topologie più complesse, alcune delle quali possono essere definite solo quando un'applicazione è in esecuzione.
In questo argomento vengono analizzate tre topologie di spostamento comuni: lineare fissa, gerarchica fissa e generata dinamicamente. Per ogni topologia di spostamento viene fornito un esempio con un'UI analoga a quella illustrata nella figura seguente:
Topologie di spostamento strutturate
Esistono due tipi di topologie di spostamento:
Topologia fissa: viene definita in fase di compilazione e non viene modificata in fase di esecuzione. Le topologie fisse sono utili per lo spostamento in una sequenza fissa di pagine con un ordine lineare o gerarchico.
Topologia dinamica: viene definita in fase di esecuzione in base a input raccolto dall'utente, dall'applicazione o dal sistema. Le topologie dinamiche sono utili quando è possibile spostarsi tra le pagine in sequenze diverse.
Benché sia possibile creare topologie di spostamento utilizzando le pagine, negli esempi vengono utilizzate funzioni di pagina poiché offrono un supporto aggiuntivo che semplifica le operazioni di passaggio e di restituzione dei dati attraverso le pagine di una topologia.
Spostamento in una topologia lineare fissa
Una topologia lineare fissa è analoga alla struttura di una procedura guidata composta da una o più pagine in cui è possibile spostarsi in una sequenza fissa. Nella figura riportata di seguito viene visualizzata la struttura di livello elevato e il flusso di una procedura guidata con una topologia lineare fissa.
I comportamenti tipici per lo spostamento in una topologia lineare fissa sono i seguent:
Spostamento dalla pagina chiamante alla pagina di avvio che inizializza la procedura guidata e consente di passare alla prima pagina della procedura. La pagina di avvio (PageFunction<T> senza UI) non è obbligatoria, poiché è possibile chiamare la prima pagina della procedura guidata direttamente dalla pagina chiamante. Tuttavia, l'utilizzo di una pagina di avvio può semplificare l'inizializzazione della procedura guidata, in particolare se tale operazione è complessa.
Gli utenti possono spostarsi tra le pagine utilizzando i pulsanti, o collegamenti ipertestuali, Avanti e Indietro.
Gli utenti possono spostarsi tra le pagine utilizzando il journal.
Gli utenti possono annullare la procedura guidata da qualsiasi pagina scegliendo il pulsante Annulla.
Gli utenti possono accettare la procedura guidata sull'ultima pagina scegliendo il pulsante Fine.
Se una procedura guidata viene annullata, restituisce un risultato appropriato e non restituisce dati.
Se una procedura guidata viene accettata, tale procedura restituisce un risultato appropriato e 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 isolata, evitando potenziali anomalie dei dati o dello stato.
Spostamento dinamico in una topologia gerarchica fissa
In alcune applicazioni, è possibile spostarsi dalle pagine in due o più altre pagine, come illustrato nella figura seguente.
Questa struttura è nota come topologia gerarchica fissa e la sequenza nella quale viene attraversata la gerarchia è spesso determinata in fase di esecuzione dall'applicazione o dall'utente. In fase di esecuzione, in ogni pagina della gerarchia che consente lo spostamento a due o più altre pagine vengono raccolti i dati necessari a determinare in quale pagina spostarsi. Nella figura riportata di seguito viene illustrata una delle numerose sequenze di spostamento possibili in base alla figura precedente.
Anche se la sequenza delle pagine in cui ci si sposta in una struttura gerarchica fissa viene determinata in fase di esecuzione, l'esperienza utente è uguale a quella di una topologia lineare fissa:
Spostamento dalla pagina chiamante alla pagina di avvio che inizializza la procedura guidata e consente di passare alla prima pagina della procedura. La pagina di avvio (PageFunction<T> senza UI) non è obbligatoria, poiché è possibile chiamare la prima pagina della procedura guidata direttamente dalla pagina chiamante. Tuttavia, l'utilizzo di una pagina di avvio può semplificare l'inizializzazione della procedura guidata, in particolare se tale operazione è complessa.
Gli utenti possono spostarsi tra le pagine utilizzando i pulsanti, o collegamenti ipertestuali, Avanti e Indietro.
Gli utenti possono spostarsi tra le pagine utilizzando il journal.
Gli utenti possono modificare la sequenza di spostamento se si spostano all'indietro nel journal.
Gli utenti possono annullare la procedura guidata da qualsiasi pagina scegliendo il pulsante Annulla.
Gli utenti possono accettare la procedura guidata sull'ultima pagina scegliendo il pulsante Fine.
Se una procedura guidata viene annullata, restituisce un risultato appropriato e non restituisce dati.
Se una procedura guidata viene accettata, tale procedura restituisce un risultato appropriato e 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 isolata, evitando potenziali anomalie dei dati o dello stato.
Spostamento in una topologia generata dinamicamente
In alcune applicazioni, la sequenza in cui ci si sposta su due o più pagine può essere determinata solo in fase di esecuzione dall'utente, dall'applicazione o da dati esterni. Nella figura riportata di seguito viene illustrato un insieme di pagine con una sequenza di spostamento indeterminata.
Nella figura successiva viene illustrata una sequenza di spostamento scelta dall'utente in fase di esecuzione.
La sequenza di spostamento è nota come topologia generata dinamicamente. L'esperienza utente è la stessa delle topologie di spostamento descritte in precedenza:
Spostamento dalla pagina chiamante alla pagina di avvio che inizializza la procedura guidata e consente di passare alla prima pagina della procedura. La pagina di avvio (PageFunction<T> senza UI) non è obbligatoria, poiché è possibile chiamare la prima pagina della procedura guidata direttamente dalla pagina chiamante. Tuttavia, l'utilizzo di una pagina di avvio può semplificare l'inizializzazione della procedura guidata, in particolare se tale operazione è complessa.
Gli utenti possono spostarsi tra le pagine utilizzando i pulsanti, o collegamenti ipertestuali, Avanti e Indietro.
Gli utenti possono spostarsi tra le pagine utilizzando il journal.
Gli utenti possono annullare la procedura guidata da qualsiasi pagina scegliendo il pulsante Annulla.
Gli utenti possono accettare la procedura guidata sull'ultima pagina scegliendo il pulsante Fine.
Se una procedura guidata viene annullata, restituisce un risultato appropriato e non restituisce dati.
Se una procedura guidata viene accettata, tale procedura restituisce un risultato appropriato e 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 isolata, evitando potenziali anomalie dei dati o dello stato.