2012-06-19 12 views
5

Estoy tratando de aprender MVVM, pero hay algo que aún no entiendo.MVVM - Confirmación de salida

Actualmente, tengo este controlador de eventos:

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

muy fácil. Sin embargo, me gustaría aplicar el patrón MVVM en esta aplicación.

Me pregunto, ¿se supone que debo poner esta lógica en un ViewModel en lugar de ponerlo directamente en el código de la vista? Si es así, ¿cómo se supone que debo hacer eso?

Gracias

+1

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

+0

MVVM light toolkit proporciona una forma buena y efectiva de implementar mensajes en su aplicación MVVM – HichemSeeSharp

+0

aquí hay un buen ejemplo usando MVVM light toolkit http: //stackoverflow.com/questions/3683450/handling-the-window-closing-event-with-wpf-mvvm-light-toolkit – HichemSeeSharp

Respuesta

0

Usted puede utilizar su propio ViewsService que puede ser utilizado en modelo de vista e interactuar con Vista. Por ejemplo, puede escribir el método ViewsService.CloseActiveWindow(). En este caso, no es necesario que interactúes con View directamente desde ViewModel, sino a través de la clase de servicio.

Otra forma: uso del servicio global de publicación/suscripción. ViewModel enviará el evento y la vista se suscribirá en este evento. En el caso de múltiples ventanas, puede verificar si la ventana está activa y cerrar solo la ventana activa.