Pregunta

Si tengo un ResourceDictionary en un proyecto, es posible crear otro proyecto que utiliza recursos definidos en el primer proyecto? Tenga en cuenta que ambos proyectos son aplicaciones WPF, no ControlLibraries.

Gracias !!

¿Fue útil?

Solución

Sí, por supuesto que es posible, siempre y cuando el proyecto B tiene una referencia para proyectar una.

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" />
</ResourceDictionary.MergedDictionaries>

A continuación, puede simplemente utilizar los recursos definidos en YourResourceFile.xaml.

Otros consejos

Me di cuenta que tenía que hacer referencia al ensamblado en sí y no utilizar un nombre de proyecto. Asimismo, no tenía necesidad de utilizar el paquete:. /// sintaxis para conseguir que esto funcione

Esta respuesta sobre la cuestión duplicado especifica el formato a utilizar (puedo comprobar que esta sintaxis funciona en .NET 4.0): https://stackoverflow.com/a/10216253/1260563

En concreto (ya que siempre se me olvida la parte componente pensando que es una carpeta que alguien está usando):

<ResourceDictionary.MergedDictionaries>
   <ResourceDictionary Source="/<YourAssemblyName>;component/<YourReferencedFileHere.xaml>" />
</ResourceDictionary.MergedDictionaries>

Así que si usted tiene un ensamblaje Abc.Def.dll y un archivo DLL en el que llama Xyz.xaml en el nivel raíz se debería utilizar:

<ResourceDictionary.MergedDictionaries>
   <ResourceDictionary Source="/Abc.Def;component/Xyz.xaml" />
</ResourceDictionary.MergedDictionaries>

Nota: ReSharper 7 señalado que tenía que hacer referencia al ensamblado en sí

.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top