使用 AppThemeObject 和 AppThemeColor ,您可以為應用程式建立主題感知資源,以在裝置主題更新時自動更新。
AppThemeObject和 AppThemeColor 對像是主題感知資源,可讓您更輕鬆地使用色彩、影像和其他需要根據應用程式目前主題而變更的資源。
這些物件是以 .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是一般主題感知物件,可讓您設定、 Dark 和 Default 屬性的任何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,可讓您設定 Color 、 Dark 和 Default 屬性的 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原始程式碼。