J'essaie d'utiliser l'infrastructure de commande de navigation dans WPF pour naviguer entre Pages dans une application WPF (bureau, pas XBAP ou Silverlight).Utilisation d'un bouton pour naviguer vers une autre page dans une NavigationWindow
Je crois avoir tout configuré correctement, mais cela ne fonctionne pas. Je compile et exécute sans erreurs, je ne reçois aucune erreur de liaison dans la fenêtre Sortie, mais mon bouton de navigation est désactivé.
Voici le app.xaml pour une application exemple:
<Application x:Class="Navigation.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="First.xaml">
</Application>
Notez les points StartupUri à First.xaml. First.xaml est une Page. WPF héberge automatiquement ma page dans un NavigationWindow. Voici First.xaml:
<Page x:Class="Navigation.First"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="First">
<Grid>
<Button
CommandParameter="/Second.xaml"
CommandTarget="{Binding RelativeSource=
{RelativeSource
FindAncestor,
AncestorType={x:Type NavigationWindow}}}"
Command="NavigationCommands.GoToPage"
Content="Go!"/>
</Grid>
</Page>
La commande CommandTarget du bouton est définie sur NavigationWindow. La commande est GoToPage et la page est /Second.xaml. J'ai essayé de définir le CommandTarget à la page contenant, le CommandParameter à "Second.xaml" (First.xaml et Second.xaml sont à la racine de la solution), et j'ai essayé de laisser le CommandTarget vide. J'ai également essayé de définir le chemin d'accès à la liaison vers diverses propriétés publiques liées à la navigation dans NavigationWindow. Rien n'a fonctionné jusqu'ici.
Qu'est-ce qui me manque ici? Je vraiment ne veux pas faire ma navigation dans le code.
Clarification.
Si, au lieu d'utiliser un bouton, j'utiliser un lien hypertexte:
<Grid>
<TextBlock>
<Hyperlink
NavigateUri="Second.xaml">Go!
</Hyperlink>
</TextBlock>
</Grid>
tout fonctionne comme prévu. Cependant, mes exigences d'interface utilisateur signifie que l'utilisation d'un lien hypertexte est juste. J'ai besoin d'un gros bouton gras pour que les gens puissent appuyer. C'est pourquoi je veux utiliser le bouton pour naviguer. Je veux juste savoir comment je peux obtenir le bouton pour fournir la même capacité que l'hyperlien fait dans ce cas.
Merci, mais ce n'est pas exactement applicable dans ce cas. J'ai édité ma question pour espérer la clarifier. J'essaie de trouver un moyen pour le bouton de commander la NavigationWindow où aller ensuite. Mon code ne fonctionne pas, donc je n'insiste pas pour que cela se fasse de cette façon. Je cherche un moyen d'obtenir un bouton pour travailler avec la NavigationWindow. – Will
Essentiellement, c'est la seule façon de faire cela. J'utilise des commandes dans ma machine virtuelle pour accrocher les boutons. Le modèle de vue de base contient une référence au service de navigation de la fenêtre principale. – Will