WPF: закрывать и открывать окна

#c# #.net #wpf #events

#c# #.net #wpf #Мероприятия

Вопрос:

В моем случае у меня есть главное окно и вид входа в систему.

Когда главное окно закрыто, должно отображаться окно входа в систему. Я закрываю это вот так:

     void CloseOnCompleteAndDisplayLogin(object sender, RunWorkerCompletedEventArgs e)
    {
        this.Close();
        new Login().Show();
    }
  

В окне входа в систему я открываю MainWindow вот так:

 this.Hide();
var window = new MainWindow(model).Show();
  

Проблема: когда я вхожу в систему и открываю MainWindow в первый раз, все работает нормально. Когда я закрываю MainWindow и снова вхожу в систему, некоторые функции главного окна перестают работать или начинают выдавать исключения.

Что я здесь делаю не так? Я уже понял, что Window_Loaded подобные события не запускаются при повторном входе в систему.

Ответ №1:

Да, Loaded не срабатывает, если вы скрываете / показываете. Вместо этого используйте Shown событие для инициализации вашей логики.

Ответ №2:

Я думаю, что это может быть проблемой

        new Login().Show();
  

сначала вы скрываете свой экземпляр окна входа в систему, а после закрытия MainWindow вы всегда создаете new ()