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 :
Topologies de navigation
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 :
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.
Navigation sur une topologie linéaire fixe
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 :
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 :
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 :
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.
Navigation sur une topologie générée de manière dynamique
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 :
La figure suivante illustre une séquence de navigation choisie par l’utilisateur au moment de l’exécution :
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
.NET Desktop feedback