Приложение xaml предполагает, что первое созданное окно является главным окном (showdialog игнорируется), мне нужно показать несколько окон - PullRequest
4 голосов
/ 17 ноября 2010

У меня есть следующий код в моем App.xaml.cs

private void App_Start(object sender, StartupEventArgs e)
{
  if ( CompletedInstall())
  {
    //using show to allow for pacifier if loading is slow
    var manager = new WINServiceConfig();
    MainWindow = manager;
    manager.ShowDialog();
  }
}

private bool CompletedInstall()
{
    var window = new Initialize();
    window.ShowDialog();
    return window.DoLaunchManager;
}

и следующий в App.xaml

<Application x:Class="Manager.App"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Startup="App_Start">

Когда я комментирую строку, которая проверяет CompletedInstall () менеджер . ShowDialog () работает нормально, и мое окно конфигурации показывает.Когда CompletedInstall () вызывается, вызов manager.ShowDialog () сразу возвращается без отображения окна.Я добавил главное окно, предполагая, что где-то в строке кто-то решил, что приложение должно показывать только одно окно.

Я нашел обходной путь, установив главное окно перед вызовом CompletedInstall

        private void App_Start(object sender, StartupEventArgs e)
        {
          var manager = new WINServiceConfig();
          MainWindow = manager;

          if (CompletedInstall())
          {
            manager.ShowDialog();
          }

но это вынуждает меня разрабатывать WINServiceConfig (в частности, конструктор) на основе его использования, поскольку он не может рассчитывать на выполнение предварительных условий.Это плохая форма.Что еще я могу сделать, чтобы обойти эту проблему?

Пустышка?Это не может быть лучшим ответом.Может ли это ??

1 Ответ

6 голосов
/ 17 ноября 2010

Вы должны установить для ShutdownMode значение OnExplicitShutdown (по крайней мере, при отображении исходного диалога).

...