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:

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:

Task pages with data items and navigation buttons.

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.

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:

Diagram that shows a fixed linear topology.

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:

Diagram that shows a page that can navigate to multiple pages.

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:

Diagram that shows a possible navigation sequence.

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.

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:

A set of pages with an undetermined navigation sequence.

La figura seguente illustra una sequenza di navigazione scelta dall'utente in fase di esecuzione:

Diagram that shows a navigation sequence chosen at run time.

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