ВПП Закрытие стартового окна и открытие нового

Мне нужно сделать что-то вроде этого:

  1. Приложение запускается первым. Отображается окно с некоторыми параметрами.
  2. Выбор пользователя и опция в StartWindow.
  3. В зависимости от этого параметра отображается Windows2. Пользователь выбирает некоторые параметры в Window2.
  4. В зависимости от параметров StartWindow и использования некоторых данных из Window2 главное окно может отображаться много раз с разными данными.

Вот мой тестовый проект, но после закрытия 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();
        }
    }

Спасибо.

Почему бы не изменить содержимое окна, а не пытаться показать что-то в диалогах?

Sami Kuhmonen 24.08.2024 09:22
ShowDialog здесь не уместен. Переместите свой код new Window2().Etc... в обработчик команд модели представления для StartWindow.
Dai 24.08.2024 09:29
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

По умолчанию ShutdownMode для приложения установлено на OnMainWindowClose, поэтому, когда вы закрываете первое появившееся окно (StartWindow), приложение инициализирует завершение работы и закрывается.

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

Поэтому вам придется реорганизовать свой код. ShowDialog() здесь вам не друг, используйте вместо него Show() и откройте Window2 с помощью кода StartWindow.

Другие вопросы по теме

Как открыть раскрывающийся список ComboBox с помощью клавиши со стрелкой вниз
Как привязать настраиваемую кнопку UserControl, нажимаемую для команды, к родительской модели представления UC
Как сделать WPF DataGridColumn связанным, редактируемым ComboBox, в котором изменения элементов распространяются на другие строки?
Как исправить одиночный экземпляр моего приложения Wpf .NET 8 C#?
Отправка данных Excel из VBA в C# для привязки WPF в реальном времени
Видеоплеер на C# WPF для воспроизведения ссылки на AWS
Как преобразовать поток в D3DImage с помощью SharpDX 4.2.0?
Я не понимаю сообщение об ошибке «Привязка не может быть изменена после ее использования»
WPF Multibiding, как ввести ElementName, когда целевой элемент находится в другом пользовательском элементе управления
Как отправить команды в приложение WPF для отображения всплывающих подсказок и значков на панели задач с помощью именованных каналов IPC в С#?