He publicado una pregunta hace unos meses acerca de sharing resource dictionaries across assemblies. Resulta que puede hacerlo utilizando la extensión de marcado de clave de recursos de componentes. En ese momento, solo podía hacer que funcionara con un proyecto de control personalizado de WPF, no con un proyecto simple de biblioteca de clases.¿Diferencias entre la Biblioteca de control personalizado de WPF y la Biblioteca de clases simple?
Ahora necesito usar un proyecto de Biblioteca de clases simple existente para alojar un diccionario de recursos compartidos. Eso significa que necesito adaptar el proyecto de biblioteca de clases para admitir la extensión de marcado de clave de recursos de componentes. Agregué una carpeta Temas y un documento de diccionario de recursos Generic.xaml al proyecto Biblioteca de clases, así como referencias a PresentationCore, PresentationFramework y WindowsBase. Desafortunadamente, eso no parece ser el truco.
Entonces, esta es mi pregunta: ¿Aparte de lo anterior, qué tiene un proyecto de biblioteca de control personalizado de WPF que no tiene un proyecto simple de biblioteca de clases? O, para decirlo de otra manera, ¿qué más podría agregar a mi proyecto de biblioteca de clase para que funcione esta característica? Gracias.
La extensión de marca de clave de recursos de componente no funciona. Configuré dos soluciones idénticas, una con una biblioteca de control personalizada y la otra con una biblioteca de clases simple con los archivos DLL refs y Themes/Generic.xaml. La extensión de marcado de la clave de recursos del componente funciona en la Biblioteca de control personalizado, pero no en la Biblioteca de clases. –
He solucionado el problema reemplazando la antigua Biblioteca de clases con una Biblioteca de control personalizada y moviendo todas las clases de la Biblioteca de clases a la Biblioteca de control personalizado. Pero aún me gustaría descubrir cómo adaptar una Biblioteca de clases, porque probablemente me encuentre con esto otra vez. –
Extraño. Lo siguiente funcionó para mí: crear un proyecto de biblioteca de clase, agregar referencias de WPF DLL, agregar un Themes/Generic.xaml (ninguna opción de diccionario de recursos creada como UserControl y XAML editado para ser un ResourceDictionary), crear un CRK en una clase (basado en su pregunta vinculada), agregó un recurso a generic.xaml con x: clave establecida en ese CRK. Compila bien para mí (VS2008 SP1). No necesitaba el ThemeInfoAttribute que menciona Cameron. ¿Valdría la pena publicar su archivo XAML? – itowlson