共用方式為


AppTheme 資源

使用 AppThemeObjectAppThemeColor ,您可以為應用程式建立主題感知資源,以在裝置主題更新時自動更新。

AppThemeObjectAppThemeColor 對像是主題感知資源,可讓您更輕鬆地使用色彩、影像和其他需要根據應用程式目前主題而變更的資源。 這些物件是以 .NET MAUI 中可用的 概念 AppThemeBinding 為基礎,並可讓您更輕鬆地在 中使用 ResourceDictionary這些類型的資源。

因此,您通常應該透過 XAML 中的 ThemeResource 標記延伸使用這些 API。

語法

包含 XAML 命名空間

若要在 XAML 中使用工具組,必須將下列專案 xmlns 新增至您的頁面或檢視:

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

因此,下列專案:

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

將修改為包含 xmlns ,如下所示:

<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是一般主題感知物件,可讓您設定、 DarkDefault 屬性的任何objectLight專案。 因為 AppThemeObject 不是因為不是強型別,因此在運行時間,會評估並轉換每個屬性的值。

警告

如果轉換無效,這可能會導致運行時間例外狀況。

下列範例示範如何透過 ResourceDictionary使用 AppThemeObject

<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是特殊主題感知Color,可讓您設定 ColorDarkDefault 屬性的 Light

下列範例示範如何透過 ResourceDictionary使用 AppThemeColor

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

透過樣式取用 AppThemeColor 和 AppThemeResource

由於我們可以在 中使用 ResourceDictionary這些主題感知資源,這表示我們也可以透過取用 Style它們。

下列範例示範如何透過 Style使用 AppThemeColor

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

擴充性

與都AppThemeObjectAppThemeColor繼承自抽象類 AppThemeObject<T>。 如果您需要在 .NET MAUI Community Toolkit 中無法使用的更強型別資源,您可以建立自己的繼承。

屬性

下表描述 和AppThemeColor的屬性AppThemeObject。 針對 AppThemeColor,每個屬性的類型將會 Color 是, object而不是 。

屬性 類型​ 描述
深色 object 當應用程式使用深色主題時,套用至這個資源所套用之屬性的值。
預設 object 當應用程式使用淺色或深色主題,且該主題的對應屬性沒有提供任何值時,套用至這個資源所套用的屬性的值。
淺色 object 當應用程式使用淺色主題時,套用至這個資源所套用之屬性的值。

範例

您可以在 .NET MAUI Community Toolkit 範例應用程式中找到作用中的範例AppThemeResource

API

您可以在 .NET MAUI Community Toolkit GitHub 存放庫找到 的AppThemeResource原始程式碼。