uwp
Bronnen in UWP (StaticResource / ThemeResource) en ResourceDictionary
Zoeken…
Invoering
In de nieuwe Windows 10-toepassingen zijn er veel manieren om naar een bron in de XAML-code of in de code erachter te verwijzen. Allereerst moet u de bronnen op een toegankelijke plaats aangeven. De gemakkelijke manier is om een ResourceDictionary
in context te verklaren, laten we zeggen op de huidige pagina.
1. Bronwoordenboek
Fragment van 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. Wereldwijde bronnen
Bronwoordenboeken zijn alleen toegankelijk binnen de context waarin ze zijn gedeclareerd, dus als we van plan waren te verwijzen naar bronnen die in de ene paginacontext van een andere pagina zijn gedeclareerd, zullen ze niet worden gevonden. Dus als we globale bronnen moeten definiëren zoals degene die bij het framework horen, doen we dat in App.xaml
Fragment van 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>
Op deze manier hebben we overal in onze app toegang tot ColorRed
kleurenbronnen. Maar wacht, we willen dat kleine bestandje niet besmetten met alle bronnen van onze app! Dus we doen MergedDictionaries
3. Samengevoegde woordenboeken
Meestal zijn dingen een beetje complexer en om schaalbaarheid te ondersteunen, moeten we dingen uit elkaar halen. Dus we kunnen verschillende bestanden definiëren die verschillende bronnenwoordenboeken bevatten, dat wil zeggen bronnen voor de thema's van UI-besturingselementen, bronnen voor teksten, enzovoort, dan voegen we ze allemaal samen in App.xaml-bestand.
Fragment van 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>
U kunt een nieuw woordenboekbestand maken door met de rechtermuisknop op Activummap te klikken [Toevoegen -> Nieuw item]
4. Toegang tot bronnen
We moeten nu toegang hebben tot onze aangegeven bronnen, om dat te doen vanuit XAML-code gebruiken we {ThemeResource ResourceKey}
of {StaticResource ResourceKey}
to be continued later.