Tengo archivos de diccionario de recursos (MenuTemplate.xaml, ButtonTemplate.xaml, etc.) que quiero usar en múltiples aplicaciones separadas. Podría agregarlos a los ensamblajes de las aplicaciones, pero es mejor si compilo estos recursos en un solo ensamblaje y mis aplicaciones hacen referencia a ellos, ¿verdad?
Después de compilar el ensamblado de recursos, ¿cómo puedo hacer referencia a él en el App.xaml de mis aplicaciones? Actualmente uso ResourceDictionary.MergedDictionaries para fusionar los archivos de diccionario individuales. Si los tengo en un ensamblaje, ¿cómo puedo hacer referencia a ellos en xaml?
.net
wpf
xaml
controltemplate
resourcedictionary
Gus Cavalcanti
fuente
fuente
Respuestas:
Consulte la sintaxis de URI del paquete . Quieres algo como esto:
fuente
AppDomain.AssemblyResolve
para ayudarlo a encontrar el ensamblado.Un ejemplo, solo para hacer de esto una respuesta de 15 segundos:
Supongamos que tiene "styles.xaml" en una biblioteca WPF llamada "común" y desea usarlo desde su proyecto de aplicación principal:
Salud
fuente
Estoy trabajando con .NET 4.5 y no pude hacerlo funcionar ... Estaba usando la Biblioteca de control personalizado de WPF. Esto funcionó para mí al final ...
fuente: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/11a42336-8d87-4656-91a3-275413d3cc19
fuente
La DLL de solo recursos es una opción para usted. Pero no se requiere necesariamente a menos que desee modificar recursos sin volver a compilar aplicaciones. Tener solo un archivo ResourceDictionary común también es una opción. Depende de la frecuencia con la que cambie los recursos, etc.
MyAssembly : solo nombre de ensamblado sin extensión
FolderStructureInAssembly : si sus recursos están en una carpeta, especifique la estructura de carpetas
Cuando esté haciendo esto, también es mejor conocer siteOfOrigin .
fuente
Para UWP:
fuente
Usando XAML:
Si conoce la otra
assembly
estructura y desea el códigoresources
in c # , utilice el siguiente código:Salida: si queremos utilizar
ResourceDictionary
RD1.xaml
ProjectWpfControlLibrary1
enStackOverflowApp
proyecto.Estructura de proyectos :
Diccionario de recursos:
Código de salida:
PD: Todos los
ResourceDictionary
archivos deben tenerBuild Action
como 'Resource
' o 'Page
'.Usando C #:
fuente