2010-11-16 31 views
4

Je le code suivant dans mon App.xaml.csApp XAML prend la première fenêtre instancié est la fenêtre principale (ShowDialog est ignorée), je dois montrer plusieurs fenêtres

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; 
} 

et les suivants dans la 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"> 

Quand je commente la ligne qui vérifie CompletedInstall() le manager.ShowDialog() fonctionne très bien, et mes spectacles de fenêtre de configuration. Lorsque CompletedInstall() est appelé l'appel à manager.ShowDialog() revient tout de suite sans afficher la fenêtre. J'ai ajouté la fenêtre principale en supposant que quelque part le long de la ligne quelqu'un a décidé qu'une application ne devrait montrer qu'une seule fenêtre.

Je trouve une solution de contournement en définissant la fenêtre principale avant d'appeler CompletedInstall

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

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

mais cela me force à développer WINServiceConfig (en particulier le constructeur) en fonction de son utilisation, car il ne peut pas compter sur les conditions d'achèvement. C'est une mauvaise forme. Que puis-je faire d'autre pour contourner ce problème?

Fenêtre fictive? Cela ne peut pas être la meilleure réponse. Peut-il??

Répondre

6

Vous devez définir ShutdownMode sur OnExplicitShutdown (au moins lors de l'affichage de la boîte de dialogue initiale).

+0

Merci. Cela l'a réparé. – rediVider