que - wpf c# mvvm
ViewModel por vista o por modelo? (4)
Es posible usar más de una vista para el mismo modelo de vista y también es posible usar muchos modelos de vista diferentes para la misma vista.
Many-Views to one-ViewModel:
Por ejemplo, en un arreglo de detalles maestros, puede colocar sus modelos de vista en un ObservableCollection y presentarlos en un ListBox en el que vincula los elementos a la propiedad Title del ViewModel. ListBox presenta una vista de sus modelos de vista. Entonces, ListBox.SelectedItem está vinculado a una vista diferente que presenta los detalles del modelo seleccionado.
One-View to many-ViewModels:
Comenzando con un conjunto de modelos de vista que comparten nombres de propiedades comunes, podría presentar todos los modelos de vista en la misma vista. Por ejemplo, podría tener un modelo de vista simple que consta de una propiedad Title y una propiedad ModelValue. En todos los modelos de vista, la propiedad Título sería una cadena pero cada modelo de vista diferente podría tener un tipo de datos diferente para la propiedad ModelValue. StringViewModel tendría una cadena ModelValue y DoubleViewModel tendría un doble ModelValue. La presentación de los diferentes modelos de vista podría compartir la misma vista que consiste en un TextBlock para presentar el Título y un TextBox para editar el ModelValue. Esto funcionaría para cualquier tipo editable en un TextBox.
Al mezclar y combinar vistas y modelos de vista, puede obtener una gran ventaja de una separación limpia de vistas y modelos de vista.
En el patrón MVVM, ¿hay exactamente un modelo de vista por vista o hay exactamente un modelo de vista por modelo?
Hay un modelo por modelo de vista y un modelo de vista por vista, en el otro sentido, todo es n.
Ver n - 1 ViewModel n - 1 Modelo
Teóricamente, las relaciones son
Ver n - 1 ViewModel n - 1 Modelo
Lo sé, mucha gente morderá y me golpeará, pero ... En la práctica ...
Muy a menudo, en aplicaciones comerciales, hay capa de acceso a datos (DAL). Y muy a menudo las entidades de DAL son sus Modelos. En ocasiones, debe envolver esas entidades con clases adicionales para proporcionar funcionalidad extendida o quizás algunas propiedades adicionales. Tal vez tengas tus propios modelos ...
ViewModels y Views (en la práctica) generalmente tienen una relación de 1 a 1. Algo así como: cada pantalla (o parte de la pantalla) es en realidad una Vista y un Modelo de Vista emparejados. Por lo general, creo que algo así como - Ver es la capa de la interfaz de usuario y ViewModel es el nivel de código subyacente. View es solo un archivo XAML - capa de presentación. Y (la mejor práctica), todo lo demás debería estar en ViewModel: todos los procesos de recepción de datos, todos los comandos, todos los campos intercambiables, etc. De esta forma, normalmente puede probar ViewModel (con pruebas unitarias). Un ViewModel puede tener varias Vistas (en la práctica) generalmente solo cuando usted ha compartido ViewModels para, por ejemplo, DesktopApplication (WPF), Aplicación Web (Silverlight) y Windows Phone. Algo como esto. Pero generalmente - un ViewModel - una Vista. Si tiene varias vistas para un modelo de vista, generalmente tendrá muchos problemas de mantenimiento ...