You are on page 1of 3

El patrn Modelo-Vista-ViewModel

Cmo se convirti en el patrn MVVM conveniente


WPF tiene una potente funcin de enlace de datos, que proporciona una forma fcil de un solo sentido o la sincronizacin bidireccional de propiedades. Usted puede enlazar directamente a dos elementos de WPF juntos, pero el uso comn de enlace de datos es de obligar algn tipo de datos a la vista. Esto se hace utilizando el DataContext propiedad. Dado que el DataContext propiedad se marca como herencia, se puede establecer en el elemento raz de un punto de vista y su valor se hereda a todos los elementos subyacentes de la vista. Una gran limitacin de la utilizacin de la DataContext propiedad como fuente de datos es, que no es slo una de ella.Pero en un proyecto de la vida real por lo general tienen ms de un objeto de datos per view. Entonces, qu podemos hacer? El mtodo ms obvio es aggreate todos los objetos de datos en un solo objeto que expone los datos agregados como las propiedades y que se puede enlazar con el DataContext . Este objeto se llama el modelo de vista.

Separacin de la lgica y la presentacin


El patrn MVVM es hasta ahora slo una forma conveniente para enlazar datos a la vista. Pero qu pasa con las acciones del usuario, cmo se handeld? El enfoque clsico, conocido desde WinForms es registrar un controlador de eventos, que se implementa en el archivo de cdigo subyacente de la vista. Hacer esto tiene algunas desventajas: Tener los controladores de eventos en el cdigo subyacente es malo para la prueba, ya que no puede burlarse de distancia de la vista. Cambiar el diseo de la vista a menudo tambin requiere cambios en el cdigo, ya que cada elemento tiene sus diferentes controladores de eventos. La lgica se une fuertemente a la vista. No es posible volver a usar la lgica en una otra vista As que la idea es mover toda la lgica de presentacin para el modelo de vista mediante el uso de otra de las caractersticas de WPF, es decir, Commands . Los comandos se pueden unir como los datos y el apoyo de muchos elementos como botones, ToggleButtons, menuitem, casillas de verificacin y InputBindings. El objetivo aqu es no tener ninguna lnea de la lgica en el cdigo subyacente de una vista. Esto le trae las siguientes ventajas El modelo de vista se puede comprobar fcilmente con unidad de pruebas estndar (en lugar de la interfaz de usuario de prueba) La vista puede ser rediseado sin cambiar el modelo de vista, ya que la interfaz sigue siendo la misma. El modelo de vista, incluso se puede volver a utilizar, en casos especiales, donde se encuentra ahora (esto generalmente no se recomienda)

Cul es la diferencia entre MVVM, MVP y MVC?


Siempre hay algo de confusin sobre las diferencias entre el modelo-vista-presentador, modelovista-controlador de un patrn MVVM. As que trato de definir y distinguir a un poco ms de claridad.

MVC - Modelo-Vista-Controlador
El patrn MVC consiste en un controlador que recibe directamente los datos del usuario. Dependiendo del tipo de entrada, que muestra una vista diferente o modifica los datos en el modelo. El modelo y la vista son creados por el controlador. La vista slo conoce el modelo, pero el modelo no sabe de ningn otro objeto. El patrn se utiliza a menudo en la vieja MFC y ahora en ASP.NET MVC

MVP - Modelo-Vista-Presentador
En el patrn MVP, la vista recibe la entrada del usuario y la enva al presentador. El presentador que modifica la vista o el modelo en funcin del tipo de accin del usuario. La vista y el presentador estn estrechamente unidas. Hay una bidireccional uno-a-uno relacin entre ellos. El modelo no sabe nada de la presentadora. La vista en s es pasiva, es por eso que se llama patrn de presentador, ya que el presentador empuja los datos en la vista. Este patrn se ve a menudo en Windows Forms y aplicaciones tempranas de WPF.

MVVM - Modelo-Vista-ViewModel
El modelo-vista-modelo de vista es un patrn general de WPF. Consiste en una vista, que recibe toda la entrada del usuario y la enva al modelo de vista, por lo general mediante el uso de comandos. La vista tira activamente los datos del modelo de vista mediante el uso de enlace de datos. El modelo no conoce el modelo de vista.

Tambin puedes ver este interesante artculo de Costas Bakopanos, un amigo mo, un debate sobre el modelo, los estados y los controladores en el entorno MVVM.

You might also like