2009-06-16 14 views
12

Ho la mia finestra MainApplication che avvia una nuova finestra con .ShowDialog() in modo che sia modale.Come focalizzare una finestra WPF modale quando si fa clic sulla finestra principale dell'applicazione

UploadWindow uploadWindow = new UploadWindow(); 
uploadWindow.ShowDialog(); 

Ora gli utenti lasciano spesso questa finestra aperta e possono essere persi sotto altre finestre. Quando si fa clic su MainApplication si ottiene un segnale acustico simile a un errore e non è possibile interagire con esso, quindi la finestra modale si blocca correttamente come previsto, ma sarebbe bello se la finestra modale fosse focalizzata a questo punto per mostrare all'utente che era ancora aperto.

Attualmente sembra che la finestra MainApplication sia stata bloccata.

risposta

24

Prova a impostare il proprietario della finestra di dialogo:

var uploadWindow = new UploadWindow(); 
uploadWindow.Owner = this; 
uploadWindow.ShowDialog(); 
+0

Proprio quello che stavo cercando. –

+2

Trovo un po 'strano che la proprietà Owner non sia impostata di default. Grazie per l'informazione, potrebbe rivelarsi utile un giorno. – Oskar

+0

← Questo. Seriamente, cosa intendi con "questo"? –

2

ho il problema, che non posso usare questo, se qualcuno ha lo stesso problema, è possibile utilizzare

Window.GetWindow(this) 
0

Se tutti le soluzioni di cui sopra hanno provato e continuano ad affrontare lo stesso problema quindi ecco la tua soluzione testata e verificata vai alla tua finestra xaml e aggiungi

ResizeM ode = "NoResize"

+0

Ciò provoca la messa a fuoco della finestra di dialogo modale sottostante? –

+0

Sì, stavo affrontando lo stesso problema provato sopra tutti i suggerimenti ma non poteva funzionare per me quindi ho semplicemente cambiato ResizeMode e objForm.ShowDialog(); lavorato –

1

Poiché sto utilizzando MVVM, non sto creando il codice dalla GUI. L'ho usato.

var uploadWindow = new UploadWindow(); 
uploadWindow.Owner = Application.Current.MainWindow; 
uploadWindow.ShowDialog(); 
Problemi correlati