Szukaj…


Wprowadzenie

W nowych aplikacjach systemu Windows 10 istnieje wiele sposobów odwoływania się do zasobu w kodzie XAML lub w kodzie z tyłu. Przede wszystkim musisz zadeklarować zasoby w dostępnym miejscu. Najłatwiejszym sposobem jest zadeklarowanie ResourceDictionary w kontekście, powiedzmy na bieżącej stronie.

1. Słownik zasobów

Fragment z 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. Globalne zasoby

Słowniki zasobów są dostępne tylko w kontekście, w którym zostały zadeklarowane, więc jeśli zamierzamy odwoływać się do zasobów zadeklarowanych w kontekście jednej strony z innej strony, nie zostaną one znalezione. Jeśli więc chcemy zdefiniować globalne zasoby, takie jak te dostarczane w ramach, robimy to w App.xaml

Fragment z 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>

W ten sposób możemy uzyskać dostęp ColorRed kolor zasobu z anywere w naszej aplikacji. Ale czekaj, nie chcemy zarażać tego małego pliku wszystkimi zasobami naszej aplikacji! Więc robimy MergedDictionaries

3. Scalone słowniki

Prawie zwykle rzeczy są nieco bardziej złożone i aby wspierać skalowalność, powinniśmy je rozdzielić. Możemy więc zdefiniować różne pliki zawierające różne słowniki zasobów, tj. Zasoby dla motywów kontrolek interfejsu użytkownika, zasoby dla tekstów itd., A następnie scalimy je wszystkie razem w pliku App.xaml.

Fragment z 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>

Możesz utworzyć nowy plik słownika, klikając prawym przyciskiem myszy folder zasobów [Dodaj -> Nowy element]

wprowadź opis zdjęcia tutaj

4. Dostęp do zasobów

Musimy teraz uzyskać dostęp do naszych zadeklarowanych zasobów, aby to zrobić z kodu XAML, używamy {ThemeResource ResourceKey} lub {StaticResource ResourceKey}

to be continued later.


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow