Buscar..


Introducción

En las nuevas aplicaciones de Windows 10, hay muchas formas de hacer referencia a un recurso dentro del código XAML o en el código que está detrás. En primer lugar tienes que declarar los recursos en algún lugar accesible. La forma fácil es declarar un ResourceDictionary en contexto, digamos en la página actual.

1. Diccionario de recursos

Fragmento de código de MainPage.xaml

<Page
    x:Class="MyNewApp.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MyNewApp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Page.Resources>
        <!-- Creates a resource dictionary in the page context -->
        <ResourceDictionary>
            <!-- This is a solid color brush resource
                 NOTE: Each resource inside a resource dictionary must have a key -->
            <SolidColorBrush x:Key="ColorRed">Red</SolidColorBrush>
        </ResourceDictionary>
    </Page.Resources>

    <!-- Using ThemeResource in here to access a resource already defined -->
    <Grid Background="{ThemeResource ColorRed}">

    </Grid>
</Page>

2. Recursos globales

Los diccionarios de recursos son accesibles solo dentro del contexto en el que fueron declarados, por lo que si pretendemos hacer referencia a los recursos que están declarados en el contexto de una página desde otra página, no se encontrarán. Entonces, si necesitamos que los recursos globales se definan como los que vienen con el marco, lo hacemos en App.xaml

Fragmento de App.xaml

<Application
    x:Class="MyNewApp.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    RequestedTheme="Dark">

    <Application.Resources>
        <ResourceDictionary>
            <SolidColorBrush x:Key="ColorRed">Red</SolidColorBrush>
        </ResourceDictionary>
    </Application.Resources>
</Application>

De esta manera podemos acceder al ColorRed color ColorRed desde cualquier lugar en nuestra aplicación. ¡Pero espera, no queremos infestar ese pequeño archivo con todos los recursos de nuestra aplicación! Así que hacemos MergedDictionaries

3. Diccionarios fusionados

Casi siempre las cosas son un poco más complejas y para apoyar la escalabilidad debemos dividir las cosas. Así que podemos definir varios archivos que contienen diferentes diccionarios de recursos, es decir, recursos para temas de controles de UI, recursos para textos, etc., luego los combinamos todos en el archivo App.xaml.

Fragmento de App.xaml

<Application
    x:Class="MyNewApp.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    RequestedTheme="Dark">

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Assets/Themes/GeneralStyles.xaml"/>
                <ResourceDictionary Source="/Assets/Themes/TemplatedControls.xaml"/>
                <ResourceDictionary Source="/Assets/Strings/Texts.xaml"/>
                <ResourceDictionary Source="/Assets/Strings/ErrorTexts.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

Puede crear un nuevo archivo de diccionario haciendo clic con el botón derecho en Carpeta de recursos [Agregar -> Nuevo elemento]

introduzca la descripción de la imagen aquí

4. Accediendo a los recursos

Ahora necesitamos acceder a nuestros recursos declarados, para hacerlo desde el código XAML usamos {ThemeResource ResourceKey} o {StaticResource ResourceKey}

to be continued later.


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow