wake-up-neo.com

So navigieren Sie mit der Schaltfläche in WPF zu einer anderen Seite

Ich habe eine zweite .xaml-Seite unter dem NamenPage2.xamleingerichtet und möchte dies so gestalten, dass der Benutzer beim Klicken auf meine Schaltfläche zuPage2.xamlgelangt.

Ich habe dies für meinen Button in meinemPage1.xaml:

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

Und für den Button-Eventhandler:

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

Beim Klicken auf die Schaltfläche erhalte ich die Fehlermeldung "Ressourcepage2.xaml" kann nicht gefunden werden Die Sache ist die, dassPage2.xamlim selben Ordner liegt wiePag1.xamlIch bin falsch gegangen

9
galacticfan

Lösung zu meiner eigenen Frage:

Ich bin etwas albern, um eine Lösung für meine eigene Frage zu finden, aber dank Jastis link konnte ich meinen Code herausfinden. Da er nur einen Kommentar gepostet hatte, kann ich ihn nicht als Antwort markieren. Hier ist die Lösung.

Ich habe das Navigationsfenster in ein Fenster geändert und folgendes eingefügt:

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

Und im Konstruktor der MainWindow.xaml.cs habe ich hinzugefügt:

_NavigationFrame.Navigate(new Page1());

Der letzte Schritt bestand darin, den Button-Ereignishandler auf Folgendes einzustellen:

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

Sie sollten dies verwenden, dies hat für me funktioniert:

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.

Es gibt einen variable type einer Seite mit dem rechten Namen von page.xaml in Ihrer Lösung . Danach sollten Sie seine Methoden verwenden, um dies funktional zu tun.

1
Milad Xandi

Sie benötigen dafür keinen C # -Code, sondern nur in XML:

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

(Neu formatierter Code nicht getestet)

1
lahjaton_j

Falls Sie ein separates Fenster wünschen

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

Verwenden Sie einen beliebigen Container und binden Sie den Inhalt an eine beliebige Eigenschaft in Ihrem Viewmodel oder Codebehind . Danach müssen Sie die Eigenschaft nur aktualisieren, indem Sie eine neue Seite festlegen und das PropertyChanged-Ereignis aufrufen (siehe Schnittstelle INotifyPropertyChanged). Dadurch wird der Inhalt Ihres Containers aktualisiert und Sie können alles anzeigen, was Sie möchten.

0
Florian