¿Hay alguna forma de usar StaticResource en una biblioteca de control de WPF y poder verlo en tiempo de diseño?

Tengo una biblioteca de control de WPF que se agrega a una aplicación de formularios de Windows. Queremos permitir que los controles sean localizables, sin embargo, no estoy seguro de cómo realizar esto COMPLETAMENTE sin duplicar el código.Esto es lo que estoy haciendo ahora.

Básicamente, en la aplicación de formularios de Windows, antes de que se inicie la aplicación principal, estoy creando una instancia de App.xaml que vive dentro de la aplicación de formularios (que contiene mis enlaces a mis recursos que también viven dentro de la aplicación de formularios). Esto funciona perfectamente para el tiempo de ejecución.

Sin embargo, mis controles de usuario tienen todosContent="{StaticResource SomeVariableName}", que terminan quedando en blanco. Puedo arreglar esto teniendo un app.xaml y diccionarios de recursos apropiados en mi biblioteca de control que coincidan con los de mi aplicación de formularios de Windows. Sin embargo, este es un código duplicado.

Cosas que ya he intentado en vano:

Cree una instancia del App.xaml que vive dentro de la biblioteca de control del usuario desde la aplicación de formularios. Esto no funciona porque los URI de mis recursos están buscando un recurso integrado, no mi diccionario de recursos local (podría copiar los archivos de recursos del control en una ubicación adecuada dentro de la aplicación de formularios en la compilación). Podria aprovecharContenido diferible ¿aquí? No hay mucho en línea por lo que pude encontrar en este atributo y cómo debería usarse, sin embargo.Me gustaría usar construcciones de publicación tanto para la aplicación como para los diccionarios, sin embargo, la creación de instancias de la aplicación es una referencia estática a una App.xaml compilada, por lo que puedo decir. Entonces, App.xaml debe vivir dentro de la forma al menosIntenté tener un App.xaml duplicado con una compilación posterior moviendo el resourcedictionary.xaml. Pensé que un app.xaml duplicado está bien, ya que esa es la fuerza motriz y de todos modos no querrá confiar en uno del control (lo cual hace círculos y le pregunta si debería tener el App.xaml en el control de ¿Todos? A menos que desee permitir un valor predeterminado que use recursos incrustados ...) También falló al decir que no pudo encontrar el recurso a pesar de que se colocó donde el URI debería haber estado apuntando. El código descompilado apunta aUri resourceLocater = new Uri("/WindowsFormsApplication3;component/app.xaml", UriKind.Relative);

Entonces, ¿hay alguna manera de permitir que esto funcione Y tener tiempo de diseño para ver los valores predeterminados de los componentes Y evitar la duplicación? O bien, ¿está bien la duplicación en este caso? Si el subelemento de mi segunda viñeta parece estar bien (App.xaml duplicado con compilación de recursos de recursos copiados), ¿cómo hago para que no busque un elemento de nivel de componente, sino un archivo de nivel uno?

Última pregunta (y puedo publicar esto por separado si es necesario) a la que acabo de prestar atención. Mi App.xaml se está incorporando en el código, por lo que no me permite crear nuevos ResourceDictionaries sobre la marcha de todos modos. ¿Hay alguna manera de hacer esto?

Opción final ... ¿posiblemente la mejor? - Planeo usar el código de Andre van Heerwaarde de todos modos, ¿entonces debería verificar la existencia de un archivo y agregarlo como un recurso combinado sobre la marcha? Básicamente, tengo un App.xaml en mi control de usuario que se enlaza a un ResourceDictionary incrustado predeterminado. Y, luego, haga que el código busque los recursos localizados apropiados sobre la marcha, ¿cuáles pueden ser rutas de archivo relativas? El único inconveniente que veo aquí es que el valor predeterminado no se puede cambiar sobre la marcha ... lo cual probablemente podría tener ese aspecto en un lugar específico (usando algún tipo de convención) y tener ese preferido sobre el incorporado.

Ah, y mi razón para no querer recursos incrustados es para que los usuarios finales puedan agregar / modificar nuevos recursos localizados una vez implementada la compilación.

Puedo agregar código si te ayuda a visualizarlo mejor, solo avísame.

ACTUALIZAR

Ahora me encuentro con un problema adicional con el estilo y no solo con la localización.

Este es un ejemplo de uno de los botones internos en uno de los controles:

<code><Button Style="{StaticResource GrayButton}"
</code>

Algunas cosas más que intenté / pensé:

No puedo crear una app.xaml (que nunca se usaría) con el ResourceDictionary configurado como ApplicationDefinitions no están permitidos en los proyectos de la biblioteca. Podría incrustar esto en los recursos del control, pero eso siempre tendría prioridad sobre cualquier recurso de nivel de aplicación y pierdo la personalización.

Aquí hay un caso de conexión Eso realmente suena como lo que estoy buscando, sin embargo, no proporciona ninguna solución real para esto

La solución (más allá de la parte superior ... que no funciona) en la que puedo pensar que podría funcionar (y todavía tengo que intentarlo) también parece mucho trabajo para algo que creo que debería ser simple. Sin embargo, es posible que pueda crear algunas propiedades de dependencia en el control al que puedo vincularme y luego permitir que sean anuladas por el proyecto que utilizará el control. Como dije, eso parece mucho trabajo para una solicitud bastante simple :). ¿Esto funcionaría? Y lo que es más importante, ¿hay una solución mejor y más simple que me esté perdiendo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta