Как правильно сделать переходы между страницами WPF C#?

В WPF (Windows Presentation Foundation) вам необходимо использовать навигационную систему для создания переходов между страницами. Существует несколько способов реализации навигации, и одним из наиболее распространенных является использование Frame элемента.

  1. Создайте новый проект WPF в Visual Studio.
  2. Добавьте Frame элемент на основное окно (MainWindow.xaml). Frame будет использоваться для отображения различных страниц.
<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Frame x:Name="MainFrame" NavigationUIVisibility="Hidden"/>
    </Grid>
</Window>
  1. Создайте новые WPF Page для каждой страницы, которую хотите отображать. Например, создайте MainPage.xaml и SecondPage.xaml.
  1. В MainPage.xaml.cs добавьте обработчик события Loaded, чтобы первая страница отображалась при запуске приложения.
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        MainPage mainPage = new MainPage();
        MainFrame.Navigate(mainPage);
    }
}
  1. Воспользуйтесь методом Navigate(Frame, Object), чтобы перейти на другую страницу. Например, в обработчике нажатия кнопки на MainPage.xaml.cs:
private void Button_Click(object sender, RoutedEventArgs e)
{
    SecondPage secondPage = new SecondPage();
    MainFrame.Navigate(secondPage);
}
  1. Чтобы добавить кнопку "Назад", используйте команду GoBack у объекта Frame:
private void BackButton_Click(object sender, RoutedEventArgs e)
{
    if (MainFrame.CanGoBack)
        MainFrame.GoBack();
}

Теперь вы можете создавать переходы между различными страницами в WPF с использованием навигационной системы. Это позволит вам создавать модульные и масштабируемые приложения, где каждая страница представляет собой отдельный модуль с уникальными функциональными возможностями.