MVVM Light, un framework ligero para MVVM en .NET


Mvvm Light es un framework ligero para implementar un patrón de diseño MVVM en aplicaciones en .NET Framework, bastante popular en desarrollos en WPF.

Implementar MVVM (Model View ViewModel) en WPF sin un framework nos obliga a implementar una gran cantidad de herramientas por nosotros mismos. Existen múltiples frameworks disponibles para facilitarnos la vida.

De entre las distintas alternativas MVVM Light, como su nombre indica, destaca por ser un framework ligero, sencillo, y con una curva de aprendizaje suave.

Aunque adolece de ciertas características de frameworks más potentes, MVVM Light resulta mínimamente intrusivo y, sin embargo, proporciona la mayoría de herramientas habituales en un patrón MVVM. En esta entrada veremos un repaso rápido de sus principales características.

Anuncio:

Instalación

La instalación de MVVM Light está disponible a través de una Extensión de Visual Studio (2013, 2015 y 2017). Esta extensión añade plantillas para creación de un Scaffold de una aplicación con MVVM Light, y unos pocos snippets para facilitar la programación.

También es posible añadir MVVM Light en una solución existente a través del gestor de paquetes NuGet.

Componentes de MVVM Light

Cómo decíamos MVVM Light proporciona la mayoría de herramientas habituales en un patrón MVVM. Vamos a ver algunas de estas características.

RelayCommand

MVVM Light proporciona la implementación de ICommand en su objeto RelayCommand, tanto con parámetros como sin parámetros, y con la posibilidad de habilitar/deshabilitar el comando a través de una función (canExecute)

Aquí tendríamos un ejemplo de uso, donde definimos el comando como propiedad de nuestro ViewModel.

En el constructor del ViewModel instanciamos los command.

Que apunta a una función que ejecuta el comando.

Event to command

También disponemos del habitual 'Event to command', que permite routear un evento a un comando. Su uso, sería el siguiente.

INotifyPropertyChanged

Por supuesto, MVVM Light proporciona su implementación de INotifyPropertyChanged, que permite informar al UI de cambios en la propiedad bindeada.

IoC y Locator

MVVM Light también proporciona una implementación sencilla de un Inversor de Contenido (IoC), llamado SimpleIoC. Para ello, lo habitual es generar nuestro Locator, que registra las clases empleadas.

Generalmente declararemos el Locator como recurso estático en App.xaml de la siguiente forma

Finalmente, en las vistas podemos asociar el DataContext a los distintos ViewModel de la siguiente forma.

Messenger

MVVML Light también implementa un servicio de Messenger que implementa el patrón PubSub, y nos permite enviar mensajes entre objetos manteniendo débil el acoplamiento entre clases.

Por ejemplo, un objeto que desee enviar un mensaje usaría el siguiente método.

Para recibirlo, uno o varios objetos podrían sindicarse a los mensajes, definiendo una función de callback.

DispatcherHelper

Finalmente, MVVML Light proporciona la clase DispatcherHelper, que facilita el uso de tareas en el Thread principal del UI.

Este se inicializa al principio de la aplicación.

Y puede ser empleado para invocar acciones en el proceso de la UI de la siguiente forma.

Como vemos, MVVM Light es un framework sencillo, pero que proporciona los componentes básicos necesarios para implementar MVVM. Es Open Source, y está disponible en https://github.com/lbugnion/mvvmlight

Anuncio:

Previous Permisos de ficheros y carpetas en Raspberry Pi
Next Teoría de control en Arduino: Control todo o nada con histéresis
1000