MVVM - Responsabilidades
El patrón MVVM consta de tres partes: modelo, vista y modelo de vista. La mayoría de los desarrolladores al principio están un poco confundidos en cuanto a lo que un modelo, vista y modelo de vista debe o no debe contener y cuáles son las responsabilidades de cada parte.
En este capítulo aprenderemos las responsabilidades de cada parte del patrón MVVM para que pueda comprender claramente qué tipo de código va y dónde. MVVM es realmente una arquitectura en capas para el lado del cliente, como se muestra en la siguiente figura.
La capa de presentación está compuesta por las vistas.
La capa lógica son los modelos de vista.
La capa de presentación es la combinación de los objetos del modelo.
Los servicios de cliente que los producen y persisten, ya sea dirigen el acceso en una aplicación de dos niveles o mediante llamadas de servicio en y luego a su aplicación.
Los servicios de cliente no forman parte oficialmente del patrón MVVM, pero a menudo se utilizan con MVVM para lograr más separaciones y evitar el código duplicado.
Responsabilidades del modelo
En general, el modelo es el más sencillo de entender. Es el modelo de datos del lado del cliente que admite las vistas en la aplicación.
Está compuesto por objetos con propiedades y algunas variables para contener datos en memoria.
Algunas de esas propiedades pueden hacer referencia a otros objetos del modelo y crear el gráfico de objetos que en su conjunto son los objetos del modelo.
Los objetos de modelo deben generar notificaciones de cambio de propiedad, lo que en WPF significa enlace de datos.
La última responsabilidad es la validación, que es opcional, pero puede incrustar la información de validación en los objetos del modelo utilizando las funciones de validación de enlace de datos de WPF a través de interfaces como INotifyDataErrorInfo / IDataErrorInfo
Ver responsabilidades
El principal propósito y responsabilidades de las vistas es definir la estructura de lo que el usuario ve en la pantalla. La estructura puede contener partes estáticas y dinámicas.
Las partes estáticas son la jerarquía XAML que define los controles y el diseño de los controles de los que se compone una vista.
La parte dinámica es como animaciones o cambios de estado que se definen como parte de la Vista.
El objetivo principal de MVVM es que no haya ningún código detrás en la vista.
Es imposible que no haya ningún código detrás a la vista. A la vista, al menos necesita el constructor y una llamada para inicializar el componente.
La idea es que el código lógico de manejo de eventos, acción y manipulación de datos no debería estar en el código subyacente en View.
También hay otros tipos de código que deben ir en el código detrás de cualquier código que se requiera para tener una referencia al elemento de la interfaz de usuario que es inherentemente el código de vista.
Responsabilidades de ViewModel
ViewModel es el punto principal de la aplicación MVVM. La responsabilidad principal de ViewModel es proporcionar datos a la vista, de modo que la vista pueda poner esos datos en la pantalla.
También permite al usuario interactuar con los datos y cambiarlos.
La otra responsabilidad clave de un ViewModel es encapsular la lógica de interacción para una vista, pero no significa que toda la lógica de la aplicación deba ir a ViewModel.
Debería poder manejar la secuencia apropiada de llamadas para que suceda lo correcto según el usuario o cualquier cambio en la vista.
ViewModel también debe administrar cualquier lógica de navegación, como decidir cuándo es el momento de navegar a una vista diferente.