Ricerca…


introduzione

Nelle nuove applicazioni di Windows 10 ci sono molti modi per fare riferimento a una risorsa all'interno del codice XAML o nel codice sottostante. Prima di tutto devi dichiarare le risorse in qualche luogo accessibile. Il modo semplice è dichiarare un ResourceDictionary nel contesto, diciamo nella pagina corrente.

1. Dizionario delle risorse

Snippet da 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. Risorse globali

I dizionari delle risorse sono accessibili solo all'interno del contesto in cui sono stati dichiarati, quindi se intendiamo fare riferimento a risorse dichiarate in un contesto di una pagina da un'altra pagina non verranno trovate. Quindi, se abbiamo bisogno di risorse globali da definire come quelle fornite con il framework, lo facciamo in App.xaml

Snippet da 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>

In questo modo possiamo accedere ColorRed risorsa colore ColorRed da ColorRed nella nostra app. Ma aspetta, non vogliamo infestare quel piccolo file con tutte le risorse della nostra app! Quindi facciamo i MergedDictionaries

3. Dizionari uniti

Quasi sempre le cose sono un po 'più complesse e per supportare la scalabilità dovremmo dividere le cose. Quindi possiamo definire vari file contenenti dizionari di risorse diverse, ovvero risorse per i temi dei controlli dell'interfaccia utente, risorse per i testi e così via, quindi li uniamo tutti insieme nel file App.xaml.

Snippet da 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>

È possibile creare un nuovo file dizionario facendo clic con il tasto destro sulla cartella Asset [Aggiungi -> Nuovo elemento]

inserisci la descrizione dell'immagine qui

4. Accesso alle risorse

Ora dobbiamo accedere alle nostre risorse dichiarate, per fare ciò dal codice XAML usiamo {ThemeResource ResourceKey} o {StaticResource ResourceKey}

to be continued later.


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow