Tengo una aplicación de Windows Forms que necesita alojar un control WPF en tiempo de ejecución. Tengo el alojamiento básico y la interacción completa (usando un control ElementHost) y todo funciona bien hasta que intento hacer algo que requiere que el control WPF haga uso de algunos diccionarios de recursos personalizados que están definidos. (El control de WPF y toda ella es diccionarios de recursos son definidos en el mismo control WPF Biblioteca de DLL.)Carga/Uso de diccionarios de recursos desde un control WPF alojado en WinForms
Tan pronto como esto sucede, aparece un montón de errores que se parecen a esto:
System.Windows.ResourceDictionary Warning: 9 : Resource not found; ResourceKey='DocumentHeaderInterestStyle'
He encontrado un reference (enlace aparece muerto debido al archivo, thispodría ser el mismo artículo al que se hizo referencia originalmente). eso habla de esto, pero parece que el artículo se acerca más a las cosas desde el lado de WPF, pero realmente no quiero tener que hacer cambios en el control de WPF ya que todo funciona en una aplicación WPF independiente.
Si la única manera de lograr esto es hacer cambios en el lado de WPF, puedo hacer esos cambios (no soy responsable de la biblioteca de control de WPF, sino de la persona que también trabaja para la misma compañía, así que no es un problema que no sea obtener su tiempo para hacer los cambios.) pero estoy esperando algo que pueda hacer en el lado de WinForms para que esto funcione.
La biblioteca de controles WPF tiene un archivo de diccionario de recursos denominado "Default.xaml" se define en el proyecto con las siguientes propiedades:
ampliar la acción: Página Copiar al Directorio de salida: No copiar Herramienta personalizada: MSBuild : Compilar
el autónomo WPF aplicación tiene la siguiente entrada en el archivo es App.xaml:
<ResourceDictionary x:Uid="ResourceDictionary_1">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary x:Uid="ResourceDictionary_2" Source="/SmartClient.Infrastructure;component/Themes\Default.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
parece que la biblioteca de control ya debe saber cómo t o obtener sus recursos. Al utilizar Resources.MergedDictionaries.Add() parece que debería funcionar, pero ¿dónde obtengo la instancia del diccionario existente?
dónde estaría el "clave" y "valor" provienen de la llamada que añadir? –
Eso tiene más sentido, pero ¿no deberían fusionarse los diccionarios? He actualizado mi pregunta con más información sobre cómo se ve el aspecto de WPF. –
Eres rockado, funcionó mágicamente. Realmente salvaste mi tiempo. –