Prostředky AppTheme

Pomocí AppThemeObject a AppThemeColor můžete vytvořit prostředky s podporou motivu pro vaši aplikaci, které se automaticky aktualizují při aktualizaci motivu zařízení.

Objekty AppThemeObject a AppThemeColor jsou prostředky rozpoznávající motiv, které usnadní práci s barvami, obrázky a dalšími prostředky, které se musí měnit podle aktuálního motivu aplikace. Tyto objekty vycházejí z konceptů AppThemeBinding , které jsou k dispozici v rozhraní .NET MAUI, a usnadní práci s těmito typy prostředků v nástroji ResourceDictionary.

Z tohoto důvodu byste tato API měli obvykle používat pomocí rozšíření značek ThemeResource v XAML.

Syntaxe

Zahrnutí oboru názvů XAML

Pokud chcete použít sadu nástrojů v XAML, musíte do stránky nebo zobrazení přidat následující xmlns položky:

xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"

Proto platí následující:

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">

</ContentPage>

Bylo by změněno tak, aby zahrnovalo xmlns následující:

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">

</ContentPage>

AppThemeResource

AppThemeObject je obecný objekt zohledňující motiv, který umožňuje nastavit libovolný objekt object pro vlastnosti Light, Dark a Default. Protože AppThemeObject není striktně typovaný, budou za běhu hodnoty u jednotlivých vlastností vyhodnoceny a převedeny na odpovídající typ.

Varování

Pokud je přetypování neplatné, může dojít k výjimce při běhu.

Následující příklad ukazuje, jak použít AppThemeObject prostřednictvím ResourceDictionary:

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
    <ContentPage.Resources>
        <toolkit:AppThemeObject Light="dark.png" Dark="light.png" x:Key="MyImageSource" />
    </ContentPage.Resources>

    <VerticalStackLayout>
        <Image Source="{toolkit:AppThemeResource MyImageSource}" />
    </VerticalStackLayout>
</ContentPage>

AppThemeColor

AppThemeColor je specializovaný prvek Color, který zohledňuje motiv a umožňuje nastavit Color pro vlastnosti Light, Dark a Default.

Následující příklad ukazuje, jak použít AppThemeColor prostřednictvím ResourceDictionary:

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
    <ContentPage.Resources>
        <toolkit:AppThemeColor Light="Red" Dark="Green" x:Key="LabelTextColor" />
    </ContentPage.Resources>

    <VerticalStackLayout>
        <Label TextColor="{toolkit:AppThemeResource LabelTextColor}" />
    </VerticalStackLayout>
</ContentPage>

Využívání AppThemeColor a AppThemeResource prostřednictvím stylů

Protože tyto prostředky zohledňující motiv můžeme používat v ResourceDictionary, znamená to, že je můžeme také používat prostřednictvím Style.

Následující příklad ukazuje, jak používat AppThemeColor prostřednictvím Style:

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
    <ContentPage.Resources>
        <toolkit:AppThemeColor Light="Red" Dark="Green" x:Key="LabelTextColor" />

        <Style x:Key="Headline" TargetType="Label">
            <Setter Property="FontFamily" Value="Segoe UI" />
            <Setter Property="FontSize" Value="10" />
            <Setter Property="TextColor" Value="{toolkit:AppThemeResource LabelTextColor}" />
        </Style>
    </ContentPage.Resources>

    <VerticalStackLayout>
        <Label Style="{StaticResource Headline}" />
    </VerticalStackLayout>
</ContentPage>

Rozšiřitelnost

Obě AppThemeObject a AppThemeColor dědí z abstraktní třídy AppThemeObject<T>. Pokud potřebujete striktněji typovaný prostředek, který není v .NET MAUI Community Toolkit k dispozici, můžete vytvořit vlastní odvozenou třídu.

Vlastnosti

Následující tabulka popisuje vlastnosti pro AppThemeObject a AppThemeColor. Pro AppThemeColor, typy každé vlastnosti budou Color místo object.

Vlastnost Typ Popis
Tmavý object Hodnota použitá u vlastnosti, na kterou se tento prostředek použije, když aplikace používá tmavý motiv.
Výchozí object Hodnota použitá u vlastnosti, na kterou se tento prostředek použije, když aplikace používá světlý nebo tmavý motiv a pro odpovídající vlastnost tohoto motivu není zadaná žádná hodnota.
Světlý režim object Hodnota použitá u vlastnosti, na kterou se tento prostředek použije, když aplikace použije světlý motiv.

Příklady

Ukázku použití AppThemeResource najdete v ukázkové aplikaci .NET MAUI Community Toolkit.

API

Zdrojový kód AppThemeResource najdete v úložišti .NET MAUI Community Toolkit na GitHubu.