Diccionarios Mezclados
Clase 31 de 52 • Curso de Xamarin.Forms
Durante el curso, comentamos que el nivel más global de los Diccionarios de Recursos dentro de una aplicación Xamarin.Forms es la propiedad Resources en la clase Application. Adicionalmente, es posible compartir recursos entre diferentes aplicaciones si implementamos un Diccionario de Recursos en un ensamblado externo de tipo DLL.
El siguiente diagrama muestra este concepto, en donde podemos apreciar que los Diccionarios de Recursos externos, los podemos incluir o “mezclar” (de ahí su nombre) en el Diccionario de Recursos de la aplicación.
Implementación de un Diccionario de Recursos mezclado
Para implementar este tipo de Diccionario de Recursos, agregaremos a nuestra solución de Xamarin.Forms, una nueva biblioteca de clases basada en el .NET Standard, tal y como lo muestra la siguiente figura:
Debido a que es una biblioteca de clases basada en el .NET Standard, aún no tiene la referencia al paquete de NuGet de Xamarin.Forms, para incluirlo, hacemos clic derecho sobre la solución y seleccionamos la opción “Manage NuGet Packages for Solution…”. En el panel de administración de paquetes de NuGet, podrás apreciar en la parte izquierda la lista de paquetes ya instalados en tu solución. Ahí, busca y selecciona el paquete de Xamarin.Forms. Una vez seleccionado, asegúrate de instalar el paquete en el nuevo proyecto que agregamos en el paso anterior.
La siguiente figura, muestra la selección de este proyecto en el panel de administración. Al momento de estar escribiendo esta lectura, la última versión de Xamarin.Forms es 3.1.0.637273. Como lo comentamos durante el curso, es sumamente importante que siempre instales la última versión de la plataforma.
Una vez instalado el paquete de NuGet de Xamarin.Forms correctamente, agregaremos un nuevo Diccionario de Recursos al proyecto. Sin embargo, no hay una plantilla en Visual Studio .NET para este tipo de elementos específicamente, pero ¡no te preocupes! Usaremos la plantilla de Content Page, ya que ella tiene los elementos necesarios: un archivo XAML y su code-behind.
Como podrás deducir en este momento, el ContentPage como tal no nos sirve, por lo que simplemente renombraremos el elemento raíz a ResourceDictionary y borraremos el contenido que tiene la plantilla. Adicionalmente, heredaremos de ResourceDictionary en la clase de code-behind. El código final lo podrás apreciar en las siguientes dos figuras:
Implementando un nuevo recurso
Ya que tenemos este nuevo Diccionario de Recursos, agregaremos un nuevo recurso en él. Para este efecto, agregaremos un Color con identificador único “ColorGlobal”, tal y como lo muestra la siguiente figura:
Usando el Diccionario de Recursos
Para usar el Diccionario de Recursos que acabamos de implementar, vayamos de regreso a la biblioteca de clases .NET Standard común de nuestra aplicación de Xamarin.Forms. Lo primero que haremos será agregar una referencia al ensamblado DiccionarioExterno. Una vez hecho esto, en el archivo App.xaml agregaremos a la colección de recursos, un nuevo Diccionario de Recursos que tenga dentro de su colección MergedDictionaries, una instancia del diccionario “Recursos” que implementamos en el paso anterior.
Uniendo todos los eslabones de esta cadena de acciones que tenemos que hacer, el resultado será el siguiente:
Como podrás apreciar, estamos instanciando el Diccionario de Recursos “Recursos” dentro de la colección “MergedDictionaries” del Diccionario de Recursos que asignamos dentro de Application. MergedDictionaries representa todos aquellos diccionarios externos, ¡por lo que podríamos tener más de 1!
Finalmente, como cualquier otro recurso a nuestro alcance, referenciamos alguno de los recursos implementados en el Diccionario de Recursos mezclado, tal y como lo muestra la siguiente figura. Nota que en este ejemplo, el editor incluso subraya el identificador del recurso con el color que representa.