uwp
Ressources dans UWP (StaticResource / ThemeResource) et ResourceDictionary
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]
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.