2012-06-19 7 views
5

Sto cercando di imparare MVVM, ma c'è qualcosa che non capisco ancora.MVVM - Conferma uscita

Attualmente, ho questo gestore di eventi:

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; 
    } 
} 

Molto facile. Tuttavia, vorrei applicare il pattern MVVM in questa applicazione.

Mi chiedo, dovrei inserire questa logica in un ViewModel invece che direttamente nel codice di visualizzazione? Se è così, come dovrei farlo?

Grazie

+1

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

+0

MVVM light toolkit fornisce un modo valido ed efficace per implementare la messaggistica nell'app MVVM – HichemSeeSharp

+0

qui è un buon esempio utilizzando MVVM light toolkit http: //stackoverflow.com/questions/3683450/handling-the-window-closing-event-with-wpf-mvvm-light-toolkit – HichemSeeSharp

risposta

0

È possibile utilizzare il proprio ViewsService che può essere usato in ViewModel e interagire con Vista. Ad esempio, è possibile scrivere il metodo ViewsService.CloseActiveWindow(). In questo caso non è necessario interagire con View direttamente da ViewModel ma tramite classe di servizio.

Un altro modo: utilizzo del servizio di pubblicazione/sottoscrizione globale. ViewModel invierà l'evento e View si iscriverà a questo evento. In caso di più finestre è possibile controllare la finestra attiva e chiudere solo la finestra attiva.