Мне нужно сделать что-то вроде этого:
Вот мой тестовый проект, но после закрытия 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
.
Почему бы не изменить содержимое окна, а не пытаться показать что-то в диалогах?