Falta grave de recursos en librerias
Ya tengo muy delimitado el funcionamiento de los temas y estilos, basado en los diccionarios de recursos de WPF. En líneas generales, tenemos una librería Temas que ofrece un tema genérico aplicable a cualquier aplicación, el cual básicamente no modifica el estilo básico del sistema pero añade nuevos estilos y plantillas genéricas, como EstiloVentana (para poder modificar todas las ventanas, ya que establecer la key a Window no funciona), EstiloTitulo (para los label que se usan como título), EstiloEtiquetaDato (para los label que se usan como dato y no como etiqueta)... Y muchos otros estilos comunes.
A continuación, cada librería que incluye interfaz complementa este diccionario con nuevos estilos que necesita, a la vez que hace uso de los recursos "heredados" de Temas. Así la librería publica a su vez un diccionario, normalmente de nombre Generico.xaml.
Por último, en la aplicación se reunen estos diccionarios en uno propio Generico.xaml, y se establece en App.xaml como diccionario de recursos de la aplicación, de forma que se utilizará en diseño en VS2008 automáticamente.
Y aquí reside el problema: en que esto que podemos hacer en la aplicación no podemos hacerlo en las librerías, es decir, no puede definirse el diccionario de recursos global de la librería para ser utilizado en diseño, por lo que si incluimos algo tan simple como {StaticResource EstiloVentana} como estilo de una ventana, esta ya no se muestra en el diseñador, alegando que ese recurso no se encuentra.
Según leo aquí, Marco Zhou dice que esa función debe realizarla Themes\generic.xaml en las librerías, un archivo que debe residir en una carpeta Themes, y que la librería debe contener un atributo ThemeInfo para informar de que se utilice. No sé si esto funciona en tiempo de ejecución ni me importa, la cuestión es que en tiempo de diseño sigo recibiendo el mismo error de recurso no encontrado.
Por lo cual... a la MIERDA. Para salir del paso, usaremos DynamicResource en lugar de StaticResource, lo cual evita el error, pero es algo que yo quería evitar, así que sigo a la espera de una solución. Creo que se lo voy a escribir al chino Zhou, a ver si sabe algo.
P.D. Si el otro día dije que me cargué CommandBinder para integrarlo en las clases que lo necesitaban, finalmente he vuelto a una clase equivalente pero "ehpañola": Gancho. Aunque las causas dan para otra entrada...
