2012-02-23 19 views

Respuesta

19

Teóricamente, las relaciones son

Ver n - 1 ViewModel n - 1 Modelo

lo sé, mucha gente va bocado y me golpearon, pero ... en la práctica ...

Muy a menudo, en las aplicaciones de negocios, 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 usted tiene sus propios modelos ...

ViewModels y vistas (en la práctica) por lo general tienen relación 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 modelo de vista puede tener varias vistas (en la práctica) por lo general sólo cuando se 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 ...

4

Hay un modelo por modelo de vista y uno viewmodel por visión, en la otra dirección todo está n.

6

Ver n - 1 ViewModel n - 1 Modelo

4

Es posible usar más de una vista para el mismo modelo de vista y también es posible usar para muchas vistas diferentes modelos para la misma vista.

Muchos-Views a un modelo de vista:

Por ejemplo, en una disposición maestro-detalle se puede poner sus modelos de vista en un ObservableCollection y presentarlos en un cuadro de lista en la que se asocia la exhibición de los artículos a la propiedad Título 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.

Uno-View a-ViewModels:

A partir de un conjunto de modelos de vista que todos los nombres de propiedad común que comparten podían 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.

mezclando y combinando las vistas y ViewModels puede obtener gran ventaja de una separación limpia de Tendencias y ViewModels.

Cuestiones relacionadas