Vue d’ensemble des topologies de navigation

Cette vue d’ensemble fournit une introduction aux topologies de navigation dans WPF. Trois topologies de navigation courantes, avec des exemples, sont abordées dans cet article.

Remarque

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 parmi les pages. Cette topologie de navigation particulière convient aux scénarios simples, bien que la navigation puisse nécessiter des topologies plus complexes, dont certaines peuvent être définies uniquement quand 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ée de manière dynamique. Chaque topologie de navigation est illustrée avec un exemple qui a une interface utilisateur semblable à celle illustrée dans la figure suivante :

Task pages with data items and navigation buttons.

Topologies de navigation structurée

Il existe deux grands types de topologies de navigation :

  • Topologie fixe : elle est 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 parmi une séquence fixe de pages dans un ordre linéaire ou hiérarchique.

  • Topologie dynamique : elle est définie au moment de l’exécution en fonction des informations recueillies auprès de l’utilisateur, de l’application ou du système. Les topologies dynamiques sont utiles quand 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 elles fournissent une prise en charge supplémentaire qui simplifie la prise en charge de la transmission et du retour de données par l’intermédiaire des 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 généraux d’un Assistant avec une topologie linéaire fixe :

Diagram that shows a fixed linear topology.

Les comportements types de navigation dans 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 appeler la première page de l’Assistant directement. Une page de lancement vous permet toutefois de simplifier l’initialisation de l’Assistant, en particulier si l’initialisation est complexe.

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

  • Les utilisateurs peuvent naviguer parmi 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é, il retourne un résultat approprié et ne retourne aucune donnée.

  • Si un utilisateur accepte un Assistant, celui-ci retourne un résultat approprié et retourne les données recueillies.

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

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

Cette structure porte le nom de 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 autorise la navigation vers plusieurs autres pages recueille les données nécessaires pour déterminer la page à atteindre. La figure suivante illustre l’une des séquences de navigation possibles basées sur la figure précédente :

Diagram that shows a possible navigation sequence.

Bien que la séquence dans laquelle les pages d’une structure hiérarchique fixe sont parcourues soit déterminée au moment de l’exécution, l’expérience utilisateur est identique à celle d’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 appeler la première page de l’Assistant directement. Une page de lancement vous permet toutefois de simplifier l’initialisation de l’Assistant, en particulier si l’initialisation est complexe.

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

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

  • Les utilisateurs peuvent changer 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é, il retourne un résultat approprié et ne retourne aucune donnée.

  • Si un utilisateur accepte un Assistant, celui-ci retourne un résultat approprié et retourne les données recueillies.

  • 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 plusieurs pages sont parcourues peut être déterminée uniquement au moment de l’exécution, que ce soit par l’utilisateur, par l’application ou par des données externes. La figure suivante illustre un ensemble de pages avec une séquence de navigation indéterminée :

A set of pages with an undetermined navigation sequence.

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

Diagram that shows a navigation sequence chosen at run time.

Cette séquence de navigation est une topologie générée de manière dynamique. Pour l’utilisateur, comme avec les autres topologies de navigation, l’expérience utilisateur est la même qu’avec 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 lanceur (sans interface utilisateur PageFunction<T>) n’est pas nécessaire, car une page appelante peut appeler la première page de l’Assistant directement. Une page de lancement vous permet toutefois de simplifier l’initialisation de l’Assistant, en particulier si l’initialisation est complexe.

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

  • Les utilisateurs peuvent naviguer parmi 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é, il retourne un résultat approprié et ne retourne aucune donnée.

  • Si un utilisateur accepte un Assistant, celui-ci retourne un résultat approprié et retourne les données recueillies.

  • 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