W WPF, możesz wywołać ShowDialog
w oknie dokładnie jeden raz. Po tym jest zrobione.Jak wykryć, że okno zużyło swoje wywołanie "ShowDialog"
Wydaje mi się, że to kiepski, ale takie są zasady. Jeśli zadzwonisz ShowDialog
znowu pojawi się ten wyjątek:
Nie można ustawić widoczność lub zadzwonić Show, ShowDialog lub WindowInteropHelper.EnsureHandle po zamknięciu okna
Co chcę wiedzieć: jak mogę weź naprawdę Window
(lub UserControl
) i sprawdź, czy został wywołany ShowDialog
(więc wiem, że do new
w górę inny przed ponownym wywołaniem ShowDialog
).
coś takiego:
public void ShowListOfClients()
{
// | This is the method I want to write
// V
RefreshViewIfNeeded(_myWindowOrUserControlThatShowsAList);
FillWindowWithBusinessData(_myWindowOrUserControlThatShowsAList);
_myWindowOrUserControlThatShowsAList.ShowDialog();
}
UWAGA: Oczywiście w powyższym przykładzie byłoby łatwiej po prostu stworzyć nową WindowOrUserControlThatShowsAList
każdym razem wprowadzić metodę. Ale proszę rozważyć pytanie bardziej niż na przykład.
Grzebałem ostatni. Nie można wymyślić poprawki // say. –
Lubię delegata do metody zamykania. To wygląda dobrze. Dzięki! – Vaccano
Poza tym pierwsza sugestia powyżej specjalnie nie działa dla okien modalnych, tj. Z 'ShowDialog()'. Pozwoli to uniknąć wyjątku, ale spowoduje inne problemy, takie jak brak możliwości wyjścia z procesu, i niepoprawne wyświetlanie okna po raz drugi, gdy jest on widoczny. Tylko druga sugestia (tj. Zawsze odtworzenie okna) jest możliwa. –