Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to navigate between windows in WPF?

Tags:

c#

click

wpf

I have tried to set up a click event for a button that opens another window,but the error I'm getting at NavigationService is that the project doesn't contain a definition for it.

This is how I'm trying to call the page at present:

private void conditioningBtn_Click(object sender, RoutedEventArgs e)
{
    this.NavigationService.Navigate(new Uri("TrainingFrm.xaml", UriKind.RelativeOrAbsolute));
}

Can someone point me in the right direction with this or show alternatives to this method for window navigation?

like image 244
Brian Var Avatar asked Feb 11 '14 15:02

Brian Var


Video Answer


3 Answers

NavigationService is for browser navigation within WPF. What you are trying to do is change to a different window TrainingFrm.

To go to a different window, you should do this:

private void conditioningBtn_Click(object sender, RoutedEventArgs e)
{
    var newForm = new TrainingFrm(); //create your new form.
    newForm.Show(); //show the new form.
    this.Close(); //only if you want to close the current form.
}

If, on the other hand, you want your WPF application to behave like a browser, then you would need to create Pages instead of Forms, and then use a Frame in your application to do the navigation. See this example.

like image 75
Joe Brunscheon Avatar answered Oct 16 '22 11:10

Joe Brunscheon


If you want to navigate from Window to Window:

private void conditioningBtn_Click(object sender, RoutedEventArgs e)
{
    Window1 window1 = new Window1();
    // window1.Show(); // Win10 tablet in tablet mode, use this, when sub Window is closed, the main window will be covered by the Start menu.
    window.ShowDialog();
    }

If you want to navigate from Window to Page:

private void conditioningBtn_Click(object sender, RoutedEventArgs e)
{
   NavigationWindow window = new NavigationWindow();
   window.Source = new Uri("Page1.xaml", UriKind.Relative);
   window.Show();
}
like image 30
haiwuxing Avatar answered Oct 16 '22 12:10

haiwuxing


In order to use NavigationService you should use the Page and not the Window class

like image 30
Terenzio Berni Avatar answered Oct 16 '22 11:10

Terenzio Berni