Как отобразить главное окно перед запуском ShowDialog - PullRequest
0 голосов
/ 23 марта 2020

У меня есть приложение, в котором при запуске моего MainWindow мне нужно выполнить некоторые действия, связанные с объектом DateTime. Иногда я могу прочитать DateTime из некоторых данных, но в противном случае мне нужно запросить ввод данных пользователем.

Для последнего я разработал новый простой MyDatePicker, содержащий элемент управления Calendar.

Моя проблема заключается в том, что диалоговое окно MyDatePicker отображается до появления MainWindow , Естественно, это происходит, когда диалог отображается из конструктора MainWindow. Я бы хотел, чтобы MainWindow появлялся перед MyDatePicker, однако MainWindow должен блокироваться перед обработкой диалогового окна, поскольку для продолжения требуется объект DateTime.

Ниже приведены конструкторы для MainWindow и его контекста данных:

public MainWindow() {
   InitializeComponent();
   DataContext = new MyContext();
}

public MyContext() {
   // some code which tries to parse a DateTime date from some data

   if (date == null) {
      MyDatePicker w = new MyDatePicker();
      w.ShowDialog();
      if (w.DialogResult == true)
         myDate = w.DateChosen;
   }

   // do stuff with date here
}
...