Brian Var
Brian Var

Reputation: 6227

How to navigate between windows in 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?

Upvotes: 8

Views: 41763

Answers (3)

haiwuxing
haiwuxing

Reputation: 1162

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();
}

Upvotes: 4

Terenzio Berni
Terenzio Berni

Reputation: 495

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

Upvotes: 3

Joe Brunscheon
Joe Brunscheon

Reputation: 1989

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.

Upvotes: 20

Related Questions