Recherche…


Introduction

Dans les nouvelles applications Windows 10, il existe plusieurs manières de référencer une ressource dans le code XAML ou dans le code. Tout d'abord, vous devez déclarer les ressources dans un endroit accessible. Le moyen le plus simple est de déclarer un ResourceDictionary en contexte, disons dans la page en cours.

1. Dictionnaire de ressources

Extrait 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. Ressources mondiales

Les dictionnaires de ressources ne sont accessibles que dans le contexte dans lequel ils ont été déclarés. Par conséquent, si nous avons l'intention de référencer des ressources déclarées dans un contexte de page d'une autre page, elles ne seront pas trouvées. Donc, si nous avons besoin de définir des ressources globales comme celles fournies avec le framework, nous le faisons dans App.xaml

Extrait 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 cette façon , nous pouvons accéder à ColorRed ressource couleur de anywere dans notre application. Mais attendez, nous ne voulons pas infester ce petit fichier avec toutes les ressources de notre application! Nous faisons donc des MergedDictionaries

3. Dictionnaires fusionnés

Presque généralement, les choses sont un peu plus complexes et pour prendre en charge l'évolutivité, nous devrions séparer les choses. Nous pouvons donc définir différents fichiers contenant différents dictionnaires de ressources, à savoir des ressources pour les thèmes des contrôles de l'interface utilisateur, des ressources pour les textes, etc., puis nous les fusionnons tous dans le fichier App.xaml.

Extrait 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>

Vous pouvez créer un nouveau fichier de dictionnaire en cliquant avec le bouton droit sur le dossier Asset [Ajouter -> Nouvel élément]

entrer la description de l'image ici

4. Accéder aux ressources

Nous avons maintenant besoin d'accéder à nos ressources déclarées, afin de le faire à partir du code XAML, nous utilisons {ThemeResource ResourceKey} ou {StaticResource ResourceKey}

to be continued later.


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow