Estoy tratando de encontrar la mejor manera de acoplar mis vistas y modelos de vista en MVVM y me he basado en el enfoque ViewModel-first utilizando mecanografiado DataTemplates, como se describe en this article y en this answer. Estoy usando Prism y tengo varios módulos que tienen sus propias bibliotecas de proyectos/clases.¿Dónde debería definir mis plantillas de datos?
Mi pregunta es: ¿Dónde deberían mis DataTemplates vivir en mi solución?
- ¿Debo poner los DataTemplates en un diccionario de recursos que vive en el mismo proyecto que tiene los tipos/ViewModels que presta?
- ¿Debo colocar las plantillas de datos en un diccionario de recursos que vive en el proyecto que tiene la ventana principal de la aplicación (es decir, Shell.xaml)?
- ¿Se deberían agregar estos diccionarios de recursos al
App.Current.MainWindow.Resources.MergedDictionaries
?
Espero que esto es suficiente información para describir lo que estoy tratando de hacer.
Actualización: ver los comentarios de la respuesta seleccionada.
Hola, gracias por tu sugerencia. Leí esa publicación hace un tiempo y uso el método que Rachel describe allí. Tengo un proyecto de infraestructura con una carpeta de temas donde almaceno mis estilos en 'Diccionarios de recursos'. El problema es que todos mis otros proyectos/módulos hacen referencia a este proyecto de infraestructura. Para usar 'DataTemplates' mecanografiadas requeriré referencias a los proyectos que contienen mi ViewModels que significaría crear una dependencia circular. ¿Debería crear un proyecto separado para contener solo 'DataTemplates'? –
Creo que puede crear solo temas de carpeta en el ensamblaje de su módulo. Lo hago de esta manera en el proyecto actual: he compartido plantillas en un ensamblado de IU separado y casi cada ensamblaje de módulo tiene su propia carpeta Temas – chopikadze
Ok, ¡eso suena como el camino a seguir! Gracias, aprecio tu consejo. Veré si puedo hacerlo funcionar. –