0

У меня есть окно с авторизацией и второе окно, куда нужно попасть после авторизации.

Как можно открыть новое окно и закрыть предыдущее, не нарушая MVVM?

blanry
  • 153
  • Где-то было уже обсуждение раньше. Найдите дубликат, кто-нибудь! – VladD Dec 11 '16 at 08:37
  • http://ru.stackoverflow.com/questions/525998/Сервис-создания-модальных-и-немодальных-окон-в-контексте-паттерна-mvvm Я пробовал по этому способу, но если я убираю в App.xaml.cs часть кода, когда спрашивают "Maybe reopen again?", то у меня окно всегда перезапускается – blanry Dec 11 '16 at 09:25
  • С этим разобрался, там в цикле пересоздание идет. Но если я регистрирую два окна, и закрываю второе окно, то у меня полностью приложение выключается. Как это решить? – blanry Dec 11 '16 at 09:28
  • Вот как там например, работать с этими командами через ViewModel. Также нужно регистрировать начальное окно в App.xaml.cs? А как тогда потом обратится к displayRootRegistry, если мне дают его сделать public? – blanry Dec 11 '16 at 09:56
  • И там получается логика обработки переносится на AskDialog.xaml.cs. А это разв не нарушение MVVM? – blanry Dec 11 '16 at 10:09
  • @VladD, также не правильно получается?
    void OnYes(object sender, RoutedEventArgs e)
        {
            Window1VM = new Window1VM();
            App.displayRootRegistry.ShowPresentation(Window1VM);
            App.displayRootRegistry.HidePresentation(App.mainVM);
        }
    
    – blanry Dec 11 '16 at 10:33
  • Чтобы приложение не выключалось, пропишите в App.xaml ShutdownMode="OnExplicitShutdown" https://msdn.microsoft.com/en-us/library/system.windows.application.shutdownmode(v=vs.110).aspx – VladD Dec 11 '16 at 11:07
  • Ну и код в том вопросе — это пример того, как можно сделать. Очевидно, что если его просто скопипастить, он не начнёт делать то, что вам нужно. Вам придётся понять, что этот код делает, и допилить под свои нужды. – VladD Dec 11 '16 at 11:09

0 Answers0