WPF при нажатии (X), чтобы закрыть новое окно — как заставить появиться другое окно?

#c# #wpf #xaml

#c# #wpf #xaml

Вопрос:

Я делаю проект в школе и столкнулся с небольшой проблемой, которую я не могу решить. У меня есть несколько классов на C # и создание каркасов WPF для них.

Как мне заставить скрытое окно из другого класса появляться при нажатии кнопки X в новом окне?

 private void Window_Closing(object sender, CancelEventArgs e)
        {
            MainWindow mainWindow = new MainWindow();
            mainWindow.ShowDialog();
            mainWindow.Visibility = Visibility.Visible;
            
        }
 

Это в моем классе, где я закрываю окно, а это из класса, в котором я скрываю свое окно и открываю другое

 private void Button_Administrator_Click(object sender, RoutedEventArgs e) //Åbner Admindelen
        {
            this.Visibility = Visibility.Collapsed;
            AdminMainMenuWindow adminMainMenuWindow = new AdminMainMenuWindow();
            adminMainMenuWindow.Show();
        }
 

Ответ №1:

Вы должны передать экземпляр окна, которое вы привязываете, в качестве параметра конструктора в новое окно, которое вы показываете:

MainWindow

 private void Button_Administrator_Click(object sender, RoutedEventArgs e) {
  this.Visibility = Visibility.Collapsed;
  AdminMainMenuWindow adminMainMenuWindow = new AdminMainMenuWindow(this);
  adminMainMenuWindow.Show();
}
 

AdminMainMenuWindow Административное меню

 public partial class AdminMainMenuWindow: Window {
  Window mainWindow;
  public AdminMainMenuWindow(Window mainWindow) {
    this.mainWindow = mainWindow;
    InitializeComponent();
    Closing  = Window_Closing;
  }

  private void Window_Closing(object sender, CancelEventArgs e) {
    mainWindow.Visibility = Visibility.Visible;
  }
}
 

Ваш код не работает, потому что вы меняете видимость нового экземпляра MainWindow вместо изменения видимости существующего.

Комментарии:

1. Большое спасибо за ваш ответ! Это помогло мне продолжить мой проект!