Estoy intentando utilizar un enfoque MVVM-ish para mi desarrollo de WPF.Fundamentos de WPF: Estilos globales compartidos para MVVM
Tengo mis clases de modelo de vista lógica en el espacio de nombres de ViewModel, y tengo estilo coincidente para estas clases de modelos de vista en el espacio de nombres de Vista.
Por el momento, tengo mi información de visualización en los archivos ResourceDictionary XAML, como plantillas de datos y estilos, que están todos fusionados en la única App.Resources ResourceDictionary en app.xaml.
Sin embargo, me encuentro con una especie de problema de huevo/pollo. Quiero que haya estilos globales que use en todas partes. Por ejemplo, quiero mi propio estilo de texto personalizado llamado MonkeyText, que podría usarse en varios estilos por todo el lugar. No puedo simplemente configurar esto en el archivo app.xaml, porque los recursos de recursos que querrán usar MonkeyText están incluidos en ese archivo app.xaml.
Supongo que si eso es imposible, una alternativa sería usar UserControls en lugar de usar DataTemplates para establecer mis vistas? Me temo que el uso de UserControls uniría las partes VM y V muy juntas.
siempre me pregunté sobre esto yo mismo, gracias por la respuesta, nunca llegué lo suficientemente lejos en WPF más allá de unos pocos applets ... por cierto, ¿cómo se conecta en cascada viewmodels dependientes? ¿tiene simplemente un "modelo de vista de aplicación" o tiene un "modelo de vista maestra" con "modelo de vista de niño" con "modelo de vista de descendiente" – Firoso
Normalmente, tiene un modelo de vista "maestra" y luego hace referencia a sus objetos de modelo y forma algunos jerarquía. Es un poco más complicado que eso, y depende en cierto modo de la estructura de los datos en su aplicación, pero esa es la versión corta –
. Pero, ¿qué ocurre si desea que MonkeyText se use en todos los TextBlocks? En WPF normal puede declarar el estilo en App.xaml y gracias a TargetType funcionará en todos los TextBlocks. Pero al usar MVVM, parece que no funciona, a menos que declare DynamicResource en todos los controles. – Peter