He desarrollado algún código WPF basado en MVVM y necesito alguna refactorización menor pero antes de hacerlo necesito decidir la mejor arquitectura.Patrón MVVM y datos semi-globales
Originalmente comencé con una aplicación que podría presentar varias representaciones similares (pero separadas) de mis datos. Llamémoslo RecordsViewModel
que tenía un RecordsView
correspondiente. Con el paso del tiempo, introduje un SettingsViewModel
que se pasó al constructor del RecordsViewModel
y se publicó visiblemente (lo que permite que RecordsView
lo use). El SettingsViewModel
está registrado para que los cambios se reflejen en todas mis vistas.
Ahora quiero dividir RecordsView
un poco porque ahora contiene dos vistas distintas.
El problema que tengo es:
- la nueva (
RecordsMainView
yRecordsAlternativeView
) ambos quieren ver Configuración. - a diferencia del anterior
RecordsView
que está instanciado por programa, estas nuevas vistas se crean instancias de Xaml (constructor predeterminado).
Así que mis opciones parecen ser:
- Camina el modelo de árbol hacia arriba para encontrar un padre con una configuración
- establecer la configuración de un
DependencyProperty
en los controles y hacer que el Xaml unirse a la propiedad de la ejemplo. - Marca
SettingsViewModel
a Singleton.
¿Alguna otra opción mejor? ¿Cuál considerarías mejor?