Partager via


Vue d’ensemble des topologies de navigation

Cette vue d’ensemble présente les topologies de navigation dans WPF. Trois topologies de navigation courantes, avec des exemples, sont ensuite abordées.

Note

Avant de lire cette rubrique, vous devez être familiarisé avec le concept de navigation structurée dans WPF à l’aide de fonctions de page. Pour plus d’informations sur ces deux rubriques, consultez Vue d’ensemble de la navigation structurée.

Cette rubrique contient les sections suivantes :

Dans WPF, la navigation se compose généralement de pages (Page) avec des liens hypertexte (Hyperlink) qui accèdent à d’autres pages en cliquant dessus. Les pages à parcourir sont identifiées par des URI (Uniform Resource Identifier) (voir URI Pack dans WPF). Considérez l’exemple simple suivant qui montre des pages, des liens hypertexte et des identificateurs de ressources uniformes (URI) :

<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>

Ces pages sont organisées dans une topologie de navigation dont la structure est déterminée par la façon dont vous pouvez naviguer entre les pages. Cette topologie de navigation particulière convient dans des scénarios simples, bien que la navigation puisse nécessiter des topologies plus complexes, dont certaines ne peuvent être définies que lorsqu’une application est en cours d’exécution.

Cette rubrique couvre trois topologies de navigation courantes : linéaire fixe, hiérarchique fixe et généré dynamiquement. Chaque topologie de navigation est illustrée avec un exemple qui a une interface utilisateur semblable à celle illustrée dans la figure suivante :

pages de tâches avec des éléments de données et des boutons de navigation.

Topologies de navigation structurée

Il existe deux grands types de topologies de navigation :

  • topologie fixe: définie au moment de la compilation et ne change pas au moment de l’exécution. Les topologies fixes sont utiles pour la navigation dans une séquence fixe de pages dans un ordre linéaire ou hiérarchique.

  • topologie dynamique: définie au moment de l’exécution en fonction de l’entrée collectée à partir de l’utilisateur, de l’application ou du système. Les topologies dynamiques sont utiles lorsque les pages peuvent être parcourues dans différentes séquences.

Bien qu’il soit possible de créer des topologies de navigation à l’aide de pages, les exemples utilisent des fonctions de page, car ils fournissent une prise en charge supplémentaire qui simplifie la prise en charge de la transmission et du retour de données via les pages d’une topologie.

Une topologie linéaire fixe est analogue à la structure d’un Assistant qui a une ou plusieurs pages parcourues dans une séquence fixe. La figure suivante montre la structure et le flux de haut niveau d’un Assistant avec une topologie linéaire fixe :

Diagramme montrant une topologie linéaire fixe.

Les comportements classiques de navigation sur une topologie linéaire fixe sont les suivants :

  • Navigation de la page appelante vers une page de lancement qui initialise l’Assistant et accède à sa première page. Une page de lanceur (sans interface utilisateur PageFunction<T>) n’est pas nécessaire, car une page appelante peut directement appeler la première page de l’assistant. Toutefois, l’utilisation d’une page de lanceur peut simplifier l’initialisation de l’assistant, en particulier si cette initialisation est complexe.

  • Les utilisateurs peuvent naviguer entre les pages à l’aide de boutons Précédent et Avant (ou liens hypertexte).

  • Les utilisateurs peuvent naviguer entre les pages à l’aide du journal.

  • Les utilisateurs peuvent annuler l’Assistant à partir de n’importe laquelle de ses pages en appuyant sur un bouton Annuler.

  • Les utilisateurs peuvent accepter l’Assistant dans sa dernière page en appuyant sur un bouton Terminer.

  • Si un assistant est annulé, l'assistant retourne un résultat approprié et ne retourne aucune donnée.

  • Si un utilisateur accepte un Assistant, l’Assistant retourne un résultat approprié et retourne les données qu’il a collectées.

  • Une fois l’Assistant terminé (accepté ou annulé), les pages que comporte l’Assistant sont supprimées du journal. Ainsi, chaque instance de l’Assistant est isolée, ce qui évite les anomalies de données ou d’état potentielles.

Navigation dynamique sur une topologie hiérarchique fixe

Dans certaines applications, les pages autorisent la navigation vers deux ou plusieurs autres pages, comme illustré dans la figure suivante :

Diagramme montrant une page qui peut accéder à plusieurs pages.

Cette structure est appelée topologie hiérarchique fixe, et la séquence dans laquelle la hiérarchie est parcourue est souvent déterminée au moment de l’exécution par l’application ou l’utilisateur. Au moment de l’exécution, chaque page de la hiérarchie qui permet la navigation vers deux ou plusieurs autres pages collecte les données requises pour déterminer la page à accéder. La figure suivante illustre l’une des séquences de navigation possibles basées sur la figure précédente :

Diagramme montrant une séquence de navigation possible.

Même si la séquence dans laquelle les pages d’une structure hiérarchique fixe sont parcourues est déterminée au moment de l’exécution, l’expérience utilisateur est identique à l’expérience utilisateur pour une topologie linéaire fixe :

  • Navigation de la page appelante vers une page de lancement qui initialise l’Assistant et accède à sa première page. Une page de lanceur (sans interface utilisateur PageFunction<T>) n’est pas nécessaire, car une page appelante peut directement appeler la première page de l’assistant. Toutefois, l’utilisation d’une page de lanceur peut simplifier l’initialisation de l’assistant, en particulier si l’initialisation est complexe.

  • Les utilisateurs peuvent naviguer entre les pages à l’aide de boutons Précédent et Avant (ou liens hypertexte).

  • Les utilisateurs peuvent naviguer entre les pages à l’aide du journal.

  • Les utilisateurs peuvent modifier la séquence de navigation s’ils reviennent en arrière dans le journal.

  • Les utilisateurs peuvent annuler l’Assistant à partir de n’importe laquelle de ses pages en appuyant sur un bouton Annuler.

  • Les utilisateurs peuvent accepter l’Assistant dans sa dernière page en appuyant sur un bouton Terminer.

  • Si un assistant est annulé, l’assistant retourne un résultat approprié et ne retourne aucune donnée.

  • Si un utilisateur accepte un Assistant, l’Assistant retourne un résultat approprié et retourne les données qu’il a collectées.

  • Une fois l’Assistant terminé (accepté ou annulé), les pages que comporte l’Assistant sont supprimées du journal. Ainsi, chaque instance de l’Assistant est isolée, ce qui évite les anomalies de données ou d’état potentielles.

Dans certaines applications, la séquence dans laquelle deux ou plusieurs pages sont accessibles ne peut être déterminée qu'au moment de l'exécution, que ce soit par l'utilisateur, l'application ou des données externes. La figure suivante illustre un ensemble de pages avec une séquence de navigation indéterminée :

Un ensemble de pages avec une séquence de navigation indéterminée.

La figure suivante illustre une séquence de navigation choisie par l’utilisateur au moment de l’exécution :

Diagramme montrant une séquence de navigation choisie au moment de l’exécution.

La séquence de navigation est appelée topologie générée dynamiquement. Pour l’utilisateur, comme avec les autres topologies de navigation, l’expérience utilisateur est la même que pour les topologies précédentes :

  • Navigation de la page appelante vers une page de lancement qui initialise l’Assistant et accède à sa première page. Une page de démarrage (PageFunction<T>sans interface utilisateur) n’est pas nécessaire, car une page appelante peut appeler directement la première page de l’assistant. Cependant, utiliser une page de lancement peut simplifier l’initialisation de l’Assistant, surtout lorsque cette initialisation est complexe.

  • Les utilisateurs peuvent naviguer entre les pages à l’aide de boutons Précédent et Avant (ou liens hypertexte).

  • Les utilisateurs peuvent naviguer entre les pages à l’aide du journal.

  • Les utilisateurs peuvent annuler l’Assistant à partir de n’importe laquelle de ses pages en appuyant sur un bouton Annuler.

  • Les utilisateurs peuvent accepter l’Assistant dans sa dernière page en appuyant sur un bouton Terminer.

  • Si un assistant est annulé, l’assistant fournit un résultat approprié et ne retourne aucune donnée.

  • Si un utilisateur accepte un Assistant, l’Assistant retourne un résultat approprié et retourne les données qu’il a collectées.

  • Une fois l’Assistant terminé (accepté ou annulé), les pages que comporte l’Assistant sont supprimées du journal. Ainsi, chaque instance de l’Assistant est isolée, ce qui évite les anomalies de données ou d’état potentielles.

Voir aussi