Application.RequestedTheme 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定值,這個值會決定應用程式整體主題的淺色喜好設定。
public:
property ApplicationTheme RequestedTheme { ApplicationTheme get(); void set(ApplicationTheme value); };
ApplicationTheme RequestedTheme();
void RequestedTheme(ApplicationTheme value);
public ApplicationTheme RequestedTheme { get; set; }
var applicationTheme = application.requestedTheme;
application.requestedTheme = applicationTheme;
Public Property RequestedTheme As ApplicationTheme
<application RequestedTheme="applicationThemeMemberName" .../>
屬性值
列舉值。 初始值是由 Windows 設定中的使用者所設定的預設主題。
範例
此範例示範如何在本機應用程式設定中儲存要求的主題,然後在重新開機應用程式時擷取並套用。
<ToggleSwitch Header="Theme" OnContent="Light" OffContent="Dark"
Toggled="ToggleSwitch_Toggled" Loaded="ToggleSwitch_Loaded"/>
private void ToggleSwitch_Toggled(object sender, RoutedEventArgs e)
{
// Save theme choice to LocalSettings.
// ApplicationTheme enum values: 0 = Light, 1 = Dark
ApplicationData.Current.LocalSettings.Values["themeSetting"] =
((ToggleSwitch)sender).IsOn ? 0 : 1;
}
private void ToggleSwitch_Loaded(object sender, RoutedEventArgs e)
{
((ToggleSwitch)sender).IsOn = App.Current.RequestedTheme == ApplicationTheme.Light;
}
App.xaml.cs
public App()
{
this.InitializeComponent();
// Get theme choice from LocalSettings.
object value = ApplicationData.Current.LocalSettings.Values["themeSetting"];
if (value != null)
{
// Apply theme choice.
App.Current.RequestedTheme = (ApplicationTheme)(int)value;
}
}
備註
有兩個內建的主題:「Light」 和 「Dark」。 根據預設,您的應用程式會使用 Windows 設定中使用者所設定的主題執行, (> [設定個人化 > 色彩 > ] 選擇您的預設應用程式模式) 。 您可以設定應用程式的 RequestedTheme 屬性來覆寫使用者預設值,並指定使用的主題。
只有在應用程式啟動時,才能設定主題,而不是在執行時設定。 嘗試在執行應用程式時設定 RequestedTheme 會擲回例外狀況 (Microsoft .NET 程式碼的 NotSupportedException) 。 如果您為使用者提供選項來挑選屬於應用程式 UI 的主題,您必須將設定儲存在應用程式資料中,並在應用程式重新開機時套用它。 (如需應用程式設定的詳細資訊,請參閱 儲存和擷取設定和其他應用程式資料) 。
如果您使用 FrameworkElement.RequestedTheme 屬性,並在 UI 中的特定元素上設定值,您可以在執行時間變更特定主題值。
另外還有使用系統值的「HighContrast」主題,但應用程式和應用程式程式碼會使用不同的技術將應用程式切換為高對比。 如果使用者以高對比模式執行,則會忽略 RequestedTheme 屬性。 請參閱 高對比主題 和 XAML 高對比樣式範例。
雖然應用程式無法在執行時間切換主題,但使用者可以從 Windows 8.1) 開始 (。 例如,使用者可能會在您的應用程式執行時啟用高對比主題,方法是使用 Alt+Shift+PrtScn 鍵快捷方式。 如果發生這種情況,XAML 資源系統將會重新計算任何 {ThemeResource} 標記延伸 使用量的資源值。 色彩和筆刷等主題適當資源接著會使用適用于目前主題的值,即使它不是原本要求該主題的應用程式也一樣。
主題特定的資源通常會在 XAML 中的個別資源字典中定義。 此資源字典來自用於控制項範本之主要ResourceDictionary 的 ThemeDictionaries屬性。 主題特定資源的預設系統資源字典名為 ThemeResources.xaml。 此檔案位於 Windows 軟體發展工具組 (SDK (SDK) 安裝的 () \Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP < SDK version > \Generic 資料夾中。
舊版的注意事項
Windows 8.x根據預設,您的應用程式會使用 themeresources.xaml 檔案中的 「Dark」 主題 (執行,「Dark」 資源的索引鍵名稱為 「Default」) 。
- 在 Windows 上,將 RequestedTheme 設定為 ElementTheme.Default 一律會導致「深色」成為主題。
- 在Windows Phone,使用ElementTheme.Default值會導致系統主題的查詢,如使用者所設定。