En MVVM, ¿las plantillas de datos se consideran vistas, ya que los controles de usuario son vistas?

StackOverflow https://stackoverflow.com/questions/1016828

Pregunta

En MVVM, cada vista tiene un modelo de vista. Una vista que entiendo es una ventana, página o control de usuario a la que puede adjuntar un ViewModel del que la vista obtiene sus datos.

Pero una DataTemplate también puede representar los datos de un ViewModel.

Así que entiendo que DataTemplate es otra " Ver " ;, pero parece haber diferencias , p. Windows, Pages y UserControls pueden definir sus propios .dlls, un tipo está vinculado con DataContect y el otro mediante la fijación de una plantilla para que Windows, Pages, UserControls se puedan adjuntar a ViewModels dinámicamente mediante un ServiceLocator / Container , etc.

¿De qué otra manera son las DataTemplates diferentes de Windows / Pages / UserControls cuando se trata de representar los datos de un ViewModel en la interfaz de usuario? ¿Y hay otros tipos de "Vistas"? aparte de estos cuatro?

¿Fue útil?

Solución

La forma en que lo uso, DataTemplate es en realidad la forma de vincular la Vista al ViewModel. Por lo general, mis DataTemplates en MVVM se ven así:

<DataTemplate DataType="{x:Type vm:FooViewModel}">
    <v:FooView />
</DataTemplate>

Otros consejos

Lo que tiene más sentido para mí en este momento de la transición a MVVM es:

UserControls: Agrupa las vistas y los controles para ejecutar un proceso completo para el usuario. Utilizo un control de usuario para un cajón deslizable que creé que permite al usuario hojear diferentes clasificaciones de partes (donde cada categoría de parte principal enruta al usuario a través de su propio proceso / asistente de selección). También mire los controles de gráficos.

Vistas: Básicamente, una cuadrícula que agrupa datos y controles relacionados que pueblan los datos deseados en el nivel más pequeño para que puedan reutilizarse.

DataTemplates: Agrupe hechos sobre " ítems " como en un cuadro de lista o GridView. Pienso en esto como cómo el texto representa un objeto sobre el que está tratando de obtener información en una lista. Por lo tanto, una plantilla de control envolvería los bloques de plantillas de datos para controlar el comportamiento de visualización de esa colección de elementos envueltos en plantillas de datos.

Así lo entiendo, pero los límites son muy confusos. Me gusta el libro de Apress Pro Expression Blend 4 de Andrew Troelson. Sin embargo, en realidad no da ejemplos con muchos datos.

No recomendaría usar un DataTemplate para vincular la vista al modelo de vista. Actualmente tengo problemas de rendimiento con este enfoque, ya que la vista se actualiza cada vez que se enfoca. Como puede ver aquí y aquí

Desafortunadamente no he encontrado una mejor opción hasta ahora.

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