2010-11-16 3 views
4

я следующий код в моем App.xaml.csApp XAML предполагает первое окно инстанцирован главное окно (ShowDialog игнорируется), мне нужно, чтобы показать несколько окон

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

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

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

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

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

Dummy window? Это не лучший ответ. Может это??

ответ

6

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

+0

Спасибо. Это исправило это. – rediVider