2010-03-17 11 views
11

Lo Splashscreen/Loading-Window nella mia applicazione WPF è impostato su Topmost = "True". Ora questa finestra si trova in cima a tutte le altre finestre anche quando passi a un'altra applicazione (perché il caricamento richiederà del tempo). Non voglio questo tipo di comportamento.WPF-Window In cima alla propria applicazione?

Se si imposta Topmost = "False" la finestra non è la più in alto. Ma se torni alla mia applicazione dopo aver lavorato con un'altra applicazione, i miei clienti a volte non si rendono conto che Loading-Windows funziona ancora. L'applicazione sembra non rispondere perché la finestra di caricamento in background è ancora la finestra attiva ed è modale.

Desidero avere la finestra di caricamento in primo piano ma solo se la mia applicazione è in primo piano. Se passi a un altro programma, la finestra dovrebbe scomparire e riapparire in alto quando torni indietro.

+0

Solo per curiosità, perché stai caricando tutte le altre finestre mentre viene visualizzata la schermata iniziale? Generalmente quando un'applicazione utilizza una schermata Splash, quella è l'unica finestra visibile per quell'app in quel momento .... – BFree

+0

Perché il caricamento richiede così tanto tempo il mio capo vuole che alcuni dati siano già visibili nella finestra principale. Non puoi interagire con i dati ma almeno puoi guardarli. – TalkingCode

risposta

10

Si può provare a utilizzare la proprietà "Proprietario" della finestra, con la schermata di avvio che si sovrapporrà sempre alle altre finestre.

+0

Nella mia applicazione, la finestra MainWindow richiede tempo per essere creata, quindi non è ancora stata creata mentre è visualizzata la schermata iniziale. Quindi non posso ancora impostare il proprietario della finestra dello splash screen sulla finestra principale. –

2

Penso che forse un cambiamento nel modello di caricamento del MainWindow potrebbe aiutare. Se si può mettere da tempo parte del caricamento della finestra su un thread in background, allora si può prendere questo percorso:

  1. Visualizza MainWindow ossa vuoti o nude (vuoto campi/griglia ecc)
  2. lancio metodo di caricamento asincrono a ottieni dati e popola la finestra principale
  3. Crea schermata iniziale, imposta il proprietario su sé stesso e mostra
  4. assicurati di chiudere la schermata iniziale quando il caricamento è completo.

che dovrebbe mantenere lo splash in alto mentre il carico è in fase di elaborazione.

Problemi correlati