2009-06-16 9 views
12

J'ai ma fenêtre MainApplication qui lance une nouvelle fenêtre avec .ShowDialog() pour qu'elle soit modale.Comment faire pour mettre au point une fenêtre WPF modale lorsque la fenêtre principale de l'application est cliquée

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

Maintenant, les utilisateurs laissent souvent cette fenêtre ouverte et peuvent se perdre sous d'autres fenêtres. Lorsque la MainApplication est cliquée, vous obtenez un bip semblable à une erreur et vous ne pouvez pas interagir avec elle, donc la fenêtre modale bloque correctement comme prévu, mais ce serait bien si la fenêtre modale était focalisée à ce point pour montrer à l'utilisateur qu'elle était toujours ouvert.

Actuellement, il semble que la fenêtre MainApplication soit verrouillée.

Répondre

24

Essayez de régler le propriétaire de la boîte de dialogue:

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

Juste ce que je cherchais. –

+2

Je trouve un peu étrange que la propriété Owner ne soit pas définie par défaut. Merci pour le conseil cependant, pourrait s'avérer utile un jour. – Oskar

+0

← Ceci. Sérieusement, qu'entendez-vous par «ceci»? –

2

J'ai le problème, que je ne peux pas l'utiliser, si quelqu'un a le même problème, vous pouvez utiliser

Window.GetWindow(this) 
0

Si tous les solutions ci-dessus essayé et toujours confrontés au même problème alors voici votre solution testée et vérifiée aller à votre fenêtre xaml et ajouter

ResizeM ode = "NoResize"

+0

Est-ce que cela provoque le focus du dialogue modal sous-jacent? –

+0

Oui, je faisais face au même problème essayé au-dessus de toutes les suggestions, mais ne pouvait pas travaillé pour moi, puis simplement changé ResizeMode et objForm.ShowDialog(); travaillé –

1

Depuis que j'utilise MVVM, je ne crée pas le code à partir de l'interface graphique. J'ai utilisé ça.

var uploadWindow = new UploadWindow(); 
uploadWindow.Owner = Application.Current.MainWindow; 
uploadWindow.ShowDialog(); 
Questions connexes