2012-06-19 16 views
5

Próbuję nauczyć się MVVM, ale jest coś, czego jeszcze nie rozumiem.MVVM - Potwierdzenie wyjścia

Obecnie mam ten obsługi zdarzeń:

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    if (MessageBox.Show("Are you sure you want to close this application?", "Close??", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No) 
    { 
     e.Cancel = true; 
    } 
} 

bardzo proste. Chciałbym jednak zastosować wzór MVVM w tej aplikacji.

Zastanawiam się, czy powinienem umieścić tę logikę w ViewModelu zamiast bezpośrednio w kodzie widoku? Jeśli tak, jak mam to zrobić?

Dzięki

+1

dup? http://stackoverflow.com/questions/4851383/wpf-mvvm-cancel-window-closing – kenny

+0

Zestaw narzędzi MVVM zapewnia dobry i skuteczny sposób wdrażania wiadomości w Twojej aplikacji MVVM – HichemSeeSharp

+0

tutaj jest dobry przykład przy użyciu MVVM light toolkit http: //stackoverflow.com/questions/3683450/handling-the-window-closing-event-with-wpf-mvvm-light-toolkit – HichemSeeSharp

Odpowiedz

0

Można użyć własnego ViewsService który może być używany w ViewModel i interakcji z widokiem. Na przykład możesz napisać metodę ViewsService.CloseActiveWindow(). W tym przypadku nie musisz wchodzić w interakcję z View bezpośrednio z ViewModel, ale za pośrednictwem klasy usługi.

Inny sposób: korzystanie z globalnej usługi publikowania/subskrypcji. ViewModel wyśle ​​wydarzenie, a View zapisze się w tym wydarzeniu. W przypadku wielu okien możesz sprawdzić, czy okno jest aktywne i zamknąć tylko aktywne okno.

Powiązane problemy