À l'aide d'un Bouton pour naviguer vers une autre Page dans un NavigationWindow
Je suis en train d'utiliser la navigation de commande dans le cadre de WPF pour naviguer entre les Pages à l'intérieur d'une application WPF (de bureau; pas XBAP ou Silverlight).
Je crois que j'ai tout configuré correctement, mais sa ne fonctionne pas. - Je créer et exécuter sans erreurs, je ne suis pas toute erreur de liaison dans la fenêtre de Sortie, mais mon bouton de navigation est désactivée.
Voici l'application.xaml pour un exemple d'application:
<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>
Note le StartupUri points à la Première.xaml. D'abord.xaml est une Page. WPF automatiquement les hôtes de ma page dans un NavigationWindow. Voici la Première.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>
Le bouton de CommandTarget est définie à l'NavigationWindow. La commande est GoToPage, et la page est /Seconde.xaml. J'ai essayé de réglage de la CommandTarget à la Page qui les contient, les CommandParameter à "Second.xaml" (en Premier.xaml et le Deuxième.xaml sont à la fois dans la racine de la solution), et j'ai essayé de quitter la CommandTarget vide. J'ai aussi essayé de définir le Chemin d'accès à la Liaison de différents navigation liées à des propriétés publiques sur la NavigationWindow. Rien n'a fonctionné jusqu'à présent.
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'ai utiliser un lien Hypertexte:
<Grid>
<TextBlock>
<Hyperlink
NavigateUri="Second.xaml">Go!
</Hyperlink>
</TextBlock>
</Grid>
tout fonctionne comme prévu. Cependant, mon UI exigences de moyens que l'utilisation d'un lien Hypertexte est à droite. J'ai besoin d'un gros bouton gras pour les gens à la presse. C'est pourquoi je veux utiliser le bouton pour naviguer. Je veux juste savoir comment je peux obtenir le Bouton d'offrir la même capacité que le lien Hypertexte n'est dans ce cas.
Vous devez vous connecter pour publier un commentaire.
Selon la la documentation, seulement
DocumentViewer
etFlowDocumentViewer
mettre en œuvre cette commande en particulier. Vous aurez besoin de trouver une commande pour la navigation queNavigationWindow
met en œuvre ou à mettre en place unCommandBinding
pour cette commande et de gérer vous-même.En XAML:
Dans les Vues (Nous avons un
Commands.cs
fichier qui contient tous ces):Dans la Page constructeur, vous pouvez connecter les deux:
NavigateHelpExecute peut être dans le code-behind (qui est ce que nous faisons), crochet dans un ViewModel gestionnaire d'événements, ou quoi que ce soit. La beauté de ceci est que vous pouvez désactiver les autres de navigation comme suit:
Espère que cette aide.
Vous souhaitez utiliser les
NavigationService
de votreNavigationWindow
comme suit:XAML:
C#:
Avec cela, vous pouvez utiliser
this
, je n'afficher que leNavigationService
ici pour plus de clartéEt puis vous pouvez mettre ceci dans votre xaml:
<local:NavigateButton Content="NavigateButton" NavigateUri="Page2.xaml"/>
Alors vous n'avez toujours pas besoin de code dans vos pages, et vous n'avez pas besoin d'ajouter des commandes à votre viewmodel.