tutorial curso beginner silverlight-4.0 user-controls mvvm-light

silverlight-4.0 - curso - mvvm beginner tutorial



MVVM/User Controls & View=Convención de ViewModel (2)

Laurent de la fama de MVVM Light me presentó a MVVM, y la convención de una vista tiene un modelo de vista. Entonces, ¿cuál es la regla de oro para los controles del usuario? ¿Un ViewModel para cada control de usuario? Al crear una Vista aprovechando más de un control de usuario, ¿crea otro modelo de vista para agregar los modelos de vista de control de usuario?

Gracias de antemano por la entrada.

Ricardo


¿Un ViewModel para cada control de usuario?

Sí, en general. Un UserControl, por lo general, no es más que otra Vista. Esto generalmente significa un ViewModel por UserControl, con una VM "principal" que lo agrega (para coincidir con la Vista que agrega los datos).

Sin embargo, existen excepciones: si el UserControl realmente no actúa más que como un control personalizado, no está vinculado a algo específico del negocio, puede ser "vista pura". En este caso, es posible que no desee tener una máquina virtual para ese control, ya que es 100% de visualización.


En mis proyectos MVVM, he tendido a hacer lo que sugiere: un ViewModel por UserControl con otro ViewModel que los combina todos.

Ese ViewModel agregado a menudo será el ViewModel para una ventana en lugar de otro UserControl, aunque eso no es necesario y puede ser más el resultado de mis preferencias e historial y el hecho de que trabajo principalmente en WPF.

El único lugar donde no tengo un ViewModel separado para UserControl es donde creo UserControls reutilizables muy específicos, como botones con efectos visuales específicos o controles deslizantes personalizados.

Eso se refleja en la estructura de mi proyecto: tengo dos carpetas estándar para UserControls (que no tienen ViewModels) y Views que son Windows o UserControls, y que siempre tienen ViewModels.