Cenni preliminari sulle topologie di navigazioneNavigation Topologies Overview

Questa panoramica fornisce un'introduzione alle topologie di spostamento in WPFWPF.This overview provides an introduction to navigation topologies in WPFWPF. Di seguito vengono analizzate tre topologie di navigazione comuni con i relativi esempi.Three common navigation topologies, with samples, are subsequently discussed.

Nota

Prima di leggere questo argomento, è necessario avere familiarità con il concetto di spostamento strutturato in WPFWPF utilizzando funzioni di pagina.Before reading this topic, you should be familiar with the concept of structured navigation in WPFWPF using page functions. Per ulteriori informazioni su entrambi gli argomenti, vedere Structured Navigation Overview.For more information on both of these topics, see Structured Navigation Overview.

Di seguito sono elencate le diverse sezioni di questo argomento:This topic contains the following sections:

In WPFWPF, navigazione consiste in genere di pagine (Page) con i collegamenti ipertestuali (Hyperlink) che consentono di passare ad altre pagine quando si fa clic.In WPFWPF, navigation typically consists of pages (Page) with hyperlinks (Hyperlink) that navigate to other pages when clicked. Le pagine in cui ci si sposta sono identificate da Uniform Resource Identifier (URI)uniform resource identifiers (URIs) (vedere URI di tipo Pack in WPF).Pages that are navigated to are identified by Uniform Resource Identifier (URI)uniform resource identifiers (URIs) (see Pack URIs in WPF). Si consideri l'esempio seguente che mostra le pagine, collegamenti ipertestuali, e Uniform Resource Identifier (URI)uniform resource identifiers (URIs):Consider the following simple example that shows pages, hyperlinks, and Uniform Resource Identifier (URI)uniform resource identifiers (URIs):

<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 un topologia di navigazione la cui struttura è determinata da come è possibile spostarsi tra le pagine.These pages are arranged in a navigation topology whose structure is determined by how you can navigate between the pages. 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.This particular navigation topology is suitable in simple scenarios, although navigation can require more complex topologies, some of which can only be defined when an application is running.

Questo argomento vengono illustrati tre topologie di spostamento comuni: lineare fissa, gerarchica fissa, e generato dinamicamente.This topic covers three common navigation topologies: fixed linear, fixed hierarchical, and dynamically generated. Ogni topologia di navigazione è illustrato un esempio con un Interfaccia utenteUI come quello illustrato nella figura riportata di seguito:Each navigation topology is demonstrated with a sample that has a Interfaccia utenteUI like the one that is shown in the following figure:

Pagine di attività con elementi di datiTask pages with data items

Topologie di navigazione strutturataStructured Navigation Topologies

Vi sono due topologie principali di navigazione:There are two broad types of navigation topologies:

  • Topologia fissa: è definita in fase di compilazione e non viene modificata in fase di esecuzione.Fixed Topology: defined at compile time and does not change at run time. Le topologie fisse sono utili per la navigazione in una sequenza fissa di pagine in un ordine lineare o gerarchico.Fixed topologies are useful for navigation through a fixed sequence of pages in either a linear or hierarchical order.

  • Topologia dinamica: è definita in fase di esecuzione in base agli input raccolti dall'utente, dall'applicazione o dal sistema.Dynamic Topology: defined at run time based on input that is collected from the user, the application, or the system. Le topologie dinamiche sono utili quando è possibile spostarsi sulle pagine in sequenze diverse.Dynamic topologies are useful when pages can be navigated in different sequences.

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.Although it is possible to create navigation topologies using pages, the samples use page functions because they provide additional support that simplifies support for passing and returning data through the pages of a topology.

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.A fixed linear topology is analogous to the structure of a wizard that has one or more wizard pages that are navigated in a fixed sequence. La figura seguente illustra la struttura generale e il flusso di una procedura guidata con topologia lineare fissa.The following figure shows the high-level structure and flow of a wizard with a fixed linear topology.

Diagramma della topologia di navigazioneNavigation topology diagram

I comportamenti tipici per la navigazione in una topologia lineare fissa includono quanto segue:The typical behaviors for navigating over a fixed linear topology include the following:

  • Navigazione dalla pagina chiamante a una pagina di avvio che inizializza la procedura guidata e porta alla prima pagina di questa.Navigating from the calling page to a launcher page that initializes the wizard and navigates to the first wizard page. La pagina di avvio (un Interfaccia utenteUI-minore PageFunction<T>) non è necessaria, poiché è una pagina chiamante può chiamare la prima pagina della procedura guidata direttamente.A launcher page (a Interfaccia utenteUI-less PageFunction<T>) is not required, since a calling page can call the first wizard page directly. L'uso di una pagina di avvio può tuttavia semplificare l'inizializzazione della procedura guidata, in particolare se questa è complessa.Using a launcher page, however, can simplify wizard initialization, particularly if initialization is complex.

  • Gli utenti possono spostarsi tra le pagine usando i pulsanti Avanti e Indietro (o i collegamenti ipertestuali).Users can navigate between pages by using Back and Forward buttons (or hyperlinks).

  • Gli utenti possono spostarsi tra pagine usando il journal.Users can navigate between pages using the journal.

  • Gli utenti possono annullare la procedura guidata da qualsiasi pagina di questa premendo il pulsante Annulla.Users can cancel the wizard from any wizard page by pressing a Cancel button.

  • Gli utenti possono accettare la procedura guidata all'ultima pagina premendo un pulsante Fine.Users can accept the wizard on the last wizard page by pressing a Finish button.

  • Se una procedura guidata viene annullata, questa restituisce un risultato appropriato e non restituisce alcun dato.If a wizard is canceled, the wizard returns an appropriate result, and does not return any data.

  • Se un utente accetta una procedura guidata, questa restituisce un risultato appropriato e restituisce i dati raccolti.If a user accepts a wizard, the wizard returns an appropriate result, and returns the data it collected.

  • Al completamento della procedura guidata (accettata o annullata), le pagine incluse nella procedura guidata vengono rimosse dal journal.When the wizard is complete (accepted or canceled), the pages that the wizard comprises are removed from the journal. In questo modo ogni istanza della procedura guidata viene mantenuta isolata, per evitare potenziali anomalie di dati o stato.This keeps each instance of the wizard isolated, thereby avoiding potential data or state anomalies.

Navigazione dinamica in una topologia gerarchica fissaDynamic Navigation over a Fixed Hierarchical Topology

In alcune applicazioni le pagine consentono di spostarsi su due o più altre pagine, come illustrato nella figura seguente.In some applications, pages allow navigation to two or more other pages, as shown in the following figure.

Pagina che consente di spostarsi su diverse altre pagineA 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.This structure is known as a fixed hierarchical topology, and the sequence in which the hierarchy is traversed is often determined at run time by either the application or the user. 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.At run time, each page in the hierarchy that allows navigation to two or more other pages gathers the data required to determine which page to navigate to. La figura seguente illustra una delle possibili sequenze di navigazione in base alla figura precedente.The following figure illustrates one of several possible navigation sequences based on the previous figure.

Diagramma della topologia di navigazioneNavigation topology diagram

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:Even though the sequence in which pages in a fixed hierarchical structure are navigated is determined at run time, the user experience is the same as the user experience for a fixed linear topology:

  • Navigazione dalla pagina chiamante a una pagina di avvio che inizializza la procedura guidata e porta alla prima pagina di questa.Navigating from the calling page to a launcher page that initializes the wizard and navigates to the first wizard page. La pagina di avvio (un Interfaccia utenteUI-minore PageFunction<T>) non è necessaria, poiché è una pagina chiamante può chiamare la prima pagina della procedura guidata direttamente.A launcher page (a Interfaccia utenteUI-less PageFunction<T>) is not required, since a calling page can call the first wizard page directly. L'uso di una pagina di avvio può tuttavia semplificare l'inizializzazione della procedura guidata, in particolare se questa è complessa.Using a launcher page, however, can simplify wizard initialization, particularly if initialization is complex.

  • Gli utenti possono spostarsi tra le pagine usando i pulsanti Avanti e Indietro (o i collegamenti ipertestuali).Users can navigate between pages by using Back and Forward buttons (or hyperlinks).

  • Gli utenti possono spostarsi tra pagine usando il journal.Users can navigate between pages using the journal.

  • Gli utenti possono modificare la sequenza di navigazione se tornano indietro tramite il journal.Users can change the navigation sequence if they navigate back through the journal.

  • Gli utenti possono annullare la procedura guidata da qualsiasi pagina di questa premendo il pulsante Annulla.Users can cancel the wizard from any wizard page by pressing a Cancel button.

  • Gli utenti possono accettare la procedura guidata all'ultima pagina premendo un pulsante Fine.Users can accept the wizard on the last wizard page by pressing a Finish button.

  • Se una procedura guidata viene annullata, questa restituisce un risultato appropriato e non restituisce alcun dato.If a wizard is canceled, the wizard returns an appropriate result, and does not return any data.

  • Se un utente accetta una procedura guidata, questa restituisce un risultato appropriato e restituisce i dati raccolti.If a user accepts a wizard, the wizard returns an appropriate result, and returns the data it collected.

  • Al completamento della procedura guidata (accettata o annullata), le pagine incluse nella procedura guidata vengono rimosse dal journal.When the wizard is complete (accepted or canceled), the pages that the wizard comprises are removed from the journal. In questo modo ogni istanza della procedura guidata viene mantenuta isolata, per evitare potenziali anomalie di dati o stato.This keeps each instance of the wizard isolated, thereby avoiding potential data or state anomalies.

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.In some applications, the sequence in which two or more pages are navigated can only be determined at run time, whether by the user, the application, or external data. La figura seguente illustra un insieme di pagine con una sequenza di navigazione non determinata.The following figure illustrates a set of pages with an undetermined navigation sequence.

Diagramma della topologia di navigazioneNavigation topology diagram

La figura seguente illustra una sequenza di navigazione scelta dall'utente in fase di esecuzione.The next figure illustrates a navigation sequence that was chosen by the user at run time.

Diagramma di navigazioneNavigation diagram

La sequenza di navigazione è indicata come topologia generata dinamicamente.The navigation sequence is known as a dynamically generated topology. L'esperienza utente è analoga alle topologie di navigazione precedenti:For the user, as with the other navigation topologies, the user experience is the same as it is for the previous topologies:

  • Navigazione dalla pagina chiamante a una pagina di avvio che inizializza la procedura guidata e porta alla prima pagina di questa.Navigating from the calling page to a launcher page that initializes the wizard and navigates to the first wizard page. La pagina di avvio (un Interfaccia utenteUI-minore PageFunction<T>) non è necessaria, poiché è una pagina chiamante può chiamare la prima pagina della procedura guidata direttamente.A launcher page (a Interfaccia utenteUI-less PageFunction<T>) is not required, since a calling page can call the first wizard page directly. L'uso di una pagina di avvio può tuttavia semplificare l'inizializzazione della procedura guidata, in particolare se questa è complessa.Using a launcher page, however, can simplify wizard initialization, particularly if initialization is complex.

  • Gli utenti possono spostarsi tra le pagine usando i pulsanti Avanti e Indietro (o i collegamenti ipertestuali).Users can navigate between pages by using Back and Forward buttons (or hyperlinks).

  • Gli utenti possono spostarsi tra pagine usando il journal.Users can navigate between pages using the journal.

  • Gli utenti possono annullare la procedura guidata da qualsiasi pagina di questa premendo il pulsante Annulla.Users can cancel the wizard from any wizard page by pressing a Cancel button.

  • Gli utenti possono accettare la procedura guidata all'ultima pagina premendo un pulsante Fine.Users can accept the wizard on the last wizard page by pressing a Finish button.

  • Se una procedura guidata viene annullata, questa restituisce un risultato appropriato e non restituisce alcun dato.If a wizard is canceled, the wizard returns an appropriate result, and does not return any data.

  • Se un utente accetta una procedura guidata, questa restituisce un risultato appropriato e restituisce i dati raccolti.If a user accepts a wizard, the wizard returns an appropriate result, and returns the data it collected.

  • Al completamento della procedura guidata (accettata o annullata), le pagine incluse nella procedura guidata vengono rimosse dal journal.When the wizard is complete (accepted or canceled), the pages that the wizard comprises are removed from the journal. In questo modo ogni istanza della procedura guidata viene mantenuta isolata, per evitare potenziali anomalie di dati o stato.This keeps each instance of the wizard isolated, thereby avoiding potential data or state anomalies.

Vedere ancheSee Also

Page
PageFunction<T>
NavigationService
Cenni preliminari sulla navigazione strutturataStructured Navigation Overview