Search code examples
c#wpfxamlbutton

How to navigate to other page with button in WPF


I have a second .xaml page set up under the name Page2.xaml and I want to make it so that when my button is clicked, the user is taken to Page2.xaml

I have this for my button inside of my Page1.xaml:

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

And for the button event handler:

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

Upon clicking the button I receive an error that says "Cannot locate resource page2.xaml" The thing is that Page2.xaml is in the same folder as Pag1.xaml so I can't see where I've gone wrong?


Solution

  • Solution to my own question:

    I feel a bit silly providing a solution to my own question but thanks to Jasti's link I was able to sort my code out. As he had only posted a comment, I can't mark it as an answer, so here is the solution.

    I changed the NavigationWindow to a Window and inserted:

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

    And within the constructor of the MainWindow.xaml.cs I added:

    _NavigationFrame.Navigate(new Page1());
    

    Then the last step was to adjust the button event handler to:

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