Мне нужно сделать что-то вроде этого:
Вот мой тестовый проект, но после закрытия StartWindow потоки программы переходят в Windows2 и MainWindow, но не отображают их.
Я знаю, это немного странно, но я переношу это со старой технологии (не .net), и она «должна быть точно такой же, как раньше». Одновременно отображается только одно окно.
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
//show start window Always
new StartWindow().ShowDialog();
//show this depending on StartWindow option chosen
new Window2().ShowDialog();
//show always (can be many times) depending on options chosen in StartWindow
new MainWindow().ShowDialog();
}
}
Спасибо.
ShowDialog здесь не уместен. Переместите свой код new Window2().Etc... в обработчик команд модели представления для StartWindow.





По умолчанию ShutdownMode для приложения установлено на OnMainWindowClose, поэтому, когда вы закрываете первое появившееся окно (StartWindow), приложение инициализирует завершение работы и закрывается.
Чтобы решить эту проблему, измените this.MainWindow, прежде чем закрывать его. Или вы можете изменить ShutdownMode на OnLastWindowClose. В обоих случаях вам нужно показать следующее окно, прежде чем закрыть последнее окно.
Поэтому вам придется реорганизовать свой код. ShowDialog() здесь вам не друг, используйте вместо него Show() и откройте Window2 с помощью кода StartWindow.
Почему бы не изменить содержимое окна, а не пытаться показать что-то в диалогах?