App XAML assume la prima finestra istanziato è la finestra principale (ShowDialog viene ignorato), ho bisogno di mostrare più finestre

StackOverflow https://stackoverflow.com/questions/4199932

Domanda

Ho il seguente codice nel mio 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;
}

e di seguito nel 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">

Quando ho commentare la linea che i controlli CompletedInstall () manager.ShowDialog () funziona bene, ed i miei spettacoli finestra di configurazione. Quando CompletedInstall () è chiamata la chiamata a manager.ShowDialog () ritorna subito senza visualizzare la finestra. Ho aggiunto la finestra principale sul presupposto che da qualche parte lungo la linea di qualcuno ha deciso un app dovrebbe mostrare una sola finestra.

Ho trovato una soluzione impostando la finestra principale prima di chiamare CompletedInstall

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

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

, ma questo mi costringe a sviluppare WINServiceConfig (in particolare il costruttore) in base al suo utilizzo, perché non può contare sui presupposti in fase di completamento. Questa è cattiva forma. Che altro posso fare per risolvere questo problema?

finestra

Dummy? Questo non può essere la risposta migliore. Can è ??

È stato utile?

Soluzione

Si dovrebbe impostare lo ShutdownMode a OnExplicitShutdown (almeno mentre mostra la finestra di dialogo iniziale).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top