2009-06-16 4 views
12

Mam moje główne okno aplikacji, które uruchamia nowe okno z .ShowDialog(), dzięki czemu jest modalne.W jaki sposób ustawić modalne okno WPF po kliknięciu głównego okna aplikacji?

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

Teraz użytkownicy często opuszczają to okno i mogą zgubić się w innych oknach. Po kliknięciu MainApplication otrzymasz sygnał przypominający błąd i nie będziesz mógł z nim współdziałać, więc okno modalne blokuje się prawidłowo, zgodnie z oczekiwaniami, ale byłoby miło, gdyby okno modalne było w tym momencie skupione, aby pokazać użytkownikowi, że to było wciąz otwarte.

Obecnie wygląda tak, jakby okno MainApplication było zablokowane.

Odpowiedz

24

Spróbuj ustawić właściciela dialogowego:

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

Właśnie tego szukałem. –

+2

Uważam, że to trochę dziwne, że właściwość Właściciel nie jest ustawiona domyślnie. Dzięki za podpowiedź, może się przydać kiedyś. – Oskar

+0

← To. Poważnie, co masz na myśli przez "to"? –

2

mam ten problem, że nie mogę korzystać z tego, jeśli ktoś ma ten sam problem, można użyć

Window.GetWindow(this) 
0

Jeśli wszystkie powyższe rozwiązania próbowały i nadal napotykają na ten sam problem. to tutaj przetestowane i zweryfikowane rozwiązanie przejdź do okna xaml i dodaj

ResizeM Ode = "NoResize"

+0

Czy to powoduje, że podstawowe okno modalne staje się skupione? –

+0

Tak, miałem do czynienia z tym samym problemem wypróbowanym powyżej wszystkich sugestii, ale nie mógł pracować dla mnie, a następnie po prostu zmieniono ResizeMode i objForm.ShowDialog(); pracował –

1

Ponieważ używam MVVM, nie tworzę kodu z GUI. Użyłem tego.

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