Pregunta

He estado haciendo un prototipo en WPF sin usar MVVM. Tiene tal tamaño ahora que lo estoy refactorizando para usar MVVM.

Cuando comencé el proyecto, salté directamente y creé UserControls para muchas cosas.

Ahora estoy rompiendo cosas en Vistas y ViewModels. Pero, estoy terminando con Vistas que contienen UserControls; los UserControls tienen enlaces a lo que ahora son objetos en el Modelo.

Entonces, ¿la noción de UserControls ahora está muerta en MVVM? Lo que quiero decir es que, en el pasado (WinForms, ASP.NET, etc.) tendría un proyecto llamado 'Controles' y reutilizaría estos. ¿La 'Vista' en MVVM es un reemplazo directo del UserControl típico?

¿Fue útil?

Solución

Un UserControl en WPF es poco más que un ContentControl con algunos valores de propiedad predeterminados ajustados. Un ContentControl es poco más que un contenido que puede tener una plantilla aplicada para definir su aspecto.

La forma en que hago MVVM omite al intermediario y define las vistas como DataTemplate s. Entonces solo necesita pegar su VM en el árbol visual de WPF en algún lugar, y WPF la procesará con su DataTemplate . Por ejemplo:

<ContentControl Content="{Binding SomeViewModel}"/>

<ItemsControl ItemsSource="{Binding SomeViewModels}"/>

Otros consejos

La forma en que veo UserControls en el mundo MVVM es como una vista. En lugar de pensar en su formulario WPF como una vista única, puede considerarlo como un compuesto de una o más vistas. Por lo tanto, un UserControl puede encapsular una vista reutilizable estándar que se puede incorporar en múltiples vistas compuestas. Excelente para la reutilización y aún son comprobables.

Mmmm ... cuando tenía controles de usuario, simplemente pasé el DataContext de la Vista al control de usuario (la subinformación necesaria para ese control de usuario). Pero es cierto, que a veces es difícil adaptar ViewModel con Vistas, UserControls, ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top