.net - from - xamarin resources




ResourceDictionary en una asamblea separada (4)

Tengo archivos de diccionario de recursos (MenuTemplate.xaml, ButtonTemplate.xaml, etc.) que quiero usar en varias aplicaciones separadas. Podría agregarlos a los ensamblados de las aplicaciones, pero es mejor si compilo estos recursos en un solo ensamblaje y tengo mis aplicaciones como referencia, ¿verdad?

Una vez creado el conjunto de recursos, ¿cómo puedo hacer referencia a él en el App.xaml de mis aplicaciones? Actualmente utilizo ResourceDictionary.MergedDictionaries para combinar los archivos de diccionarios individuales. Si los tengo en un ensamblaje, ¿cómo puedo hacer referencia a ellos en xaml?


DLL de solo recursos es una opción para usted. Pero no es necesario necesariamente a menos que desee modificar los recursos sin volver a compilar las aplicaciones. Tener solo un archivo de ResourceDictionary común también es una opción. Depende de la frecuencia con la que cambies los recursos y etc.

<ResourceDictionary Source="pack://application:,,,/
     <MyAssembly>;component/<FolderStructureInAssembly>/<ResourceFile.xaml>"/>

MyAssembly - Sólo el nombre del ensamblado sin extensión

FolderStructureInAssembly : si sus recursos están en una carpeta, especifique la estructura de la carpeta

Cuando esté haciendo esto, también es mejor que conozca siteOfOrigin .

WPF admite dos autoridades: application: /// y siteoforigin: ///. La aplicación: /// authority identifica los archivos de datos de la aplicación que se conocen en el momento de la compilación, incluidos los archivos de recursos y contenido. La autoridad de siteoforigin: /// identifica los archivos del sitio de origen. El alcance de cada autoridad se muestra en la siguiente figura.


Echa un vistazo a la sintaxis del paquete URI . Quieres algo como esto:

<ResourceDictionary Source="pack://application:,,,/YourAssembly;component/Subfolder/YourResourceFile.xaml"/>

Para UWP:

<ResourceDictionary Source="ms-appx:///##Namespace.External.Assembly##/##FOLDER##/##FILE##.xaml" />

Un ejemplo, solo para hacer de esto una respuesta de 15 segundos.

Digamos que tienes "styles.xaml" en una biblioteca de WPF llamada "common" y quieres usarlo desde tu proyecto de aplicación principal:

  1. Agregar una referencia del proyecto principal al proyecto "común"
  2. Su app.xaml debe contener:
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Common;component/styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Aclamaciones





resourcedictionary