web-dev-qa-db-fra.com

Comment naviguer vers une autre page avec un bouton dans WPF

J'ai une deuxième page .xaml configurée sous le nomPage2.xamlet je veux que cela soit fait de sorte que lorsque l'utilisateur clique sur mon bouton, l'utilisateur est redirigé versPage2.xaml

J'ai ceci pour mon bouton à l'intérieur de monPage1.xaml:

<Grid>
    <Button x:Name="localModeBtn" 
            Style="{StaticResource MainButtonStyle}"  
            Content="local mode" 
            Click="localModeBtn_Click" />
</Grid>

Et pour le gestionnaire d'événement de bouton:

private void localModeBtn_Click(object sender, RoutedEventArgs e)
    {
        Uri uri = new Uri("Page2.xaml", UriKind.Relative);
        this.NavigationService.Navigate(uri);
    }

Lorsque je clique sur le bouton, un message d'erreur "Impossible de localiser la ressourcepage2.xaml" .__ apparaît. Le problème est quePage2.xamlse trouve dans le même dossier quePag1.xamlje ne vois pas où Je me suis trompé?

9
galacticfan

Solution à ma propre question:

Je me sens un peu bête de fournir une solution à ma propre question, mais grâce à link de Jasti, j'ai pu trier mon code. Comme il avait seulement posté un commentaire, je ne peux pas le marquer comme une réponse, alors voici la solution.

J'ai changé le NavigationWindow sur une fenêtre et inséré:

<DockPanel>
    <Frame x:Name="_NavigationFrame" NavigationUIVisibility="Hidden" />
</DockPanel>

Et dans le constructeur de MainWindow.xaml.cs, j'ai ajouté:

_NavigationFrame.Navigate(new Page1());

La dernière étape consistait ensuite à ajuster le gestionnaire d’événements des boutons sur:

this.NavigationService.Navigate(new Uri("Pages/Page2.xaml", UriKind.Relative));
14
galacticfan

Vous devriez utiliser ceci, cela a fonctionné pour moi :

var Page2= new Page2(); //create your new form.
Page2.Show(); //show the new form.
this.Close(); //only if you want to close the current form.

Il y a un variable type d'une page avec le nom de page page.xaml dans votre solution . Après cela, vous devriez utiliser ses méthodes pour le faire fonctionnellement.

1
Milad Xandi

Vous n'avez besoin d'aucun code C # pour cela, faites-le simplement en XML:

<Button Content="local mode"
    Command="NavigationCommands.GoToPage"
    CommandParameter="/Page2.xaml"/>

(Code reformaté non testé)

1
lahjaton_j

Si vous voulez une fenêtre séparée

NavigationWindow navWIN = new NavigationWindow();
navWIN.Content = new pageWFbchAdmin();
navWIN.Show(); 
//winBchAdmin.ShowDialog();
0
paparazzo
private void Navigate_Click(object sender, RoutedEventArgs e)//By Prince Jain 
{
    this.NavigationService.Navigate(new Uri("Page3.xaml", UriKind.Relative));
}
0
Prince Jain

Utilisez n'importe quel conteneur et liez le contenu à n'importe quelle propriété de votre modèle de vue ou de codebehind . Après cela, il vous suffit de mettre à jour la propriété en définissant une nouvelle page et en appelant l'événement PropertyChanged (voir l'interface INotifyPropertyChanged). Cela mettra à jour le contenu de votre conteneur et vous pourrez afficher tout ce que vous voulez.

0
Florian