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;
}
}
注解
有两个内置主题:“浅色”和“深色”。 默认情况下,你的应用使用用户在 Windows 设置 (设置 > 中设置的主题运行个性化 > 颜色 > 选择默认应用模式) 。 你可以设置应用的 RequestedTheme 属性以替代用户默认值并指定使用的主题。
只能在应用启动时设置主题,而不能在应用运行时设置。 尝试在应用运行时设置 RequestedTheme 会引发异常 (Microsoft .NET 代码) NotSupportedException 。 如果为用户提供选择属于应用 UI 的主题的选项,则必须在应用数据中保存设置,并在应用重启时应用该设置。 (有关应用设置的详细信息,请参阅 存储和检索设置和其他应用数据) 。
如果使用 FrameworkElement.RequestedTheme 属性并在 UI 中的特定元素上设置值,则可以在应用 Application.RequestedTheme 之后在运行时更改特定主题值。
还有一个使用系统值的“HighContrast”主题,但应用和应用代码使用不同的技术将应用切换到高对比度。 如果用户在高对比度模式下运行,则忽略 RequestedTheme 属性。 请参阅 高对比度主题 和 XAML 高对比度样式示例。
尽管应用无法在运行时切换主题,但用户可以从Windows 8.1) 开始 (。 例如,用户可能会在应用运行时使用 Alt+Shift+PrtScn 键快捷方式启用高对比度主题。 如果发生这种情况,XAML 资源系统将重新计算任何 {ThemeResource} 标记扩展 使用的资源值。 然后,针对主题的资源(如颜色和画笔)使用适合当前主题的值,即使最初请求该主题的不是应用。
特定于主题的资源通常在 XAML 中的单独资源字典中定义。 此资源字典来自用于控件模板的主 ResourceDictionary 的 ThemeDictionaries 属性。 特定于主题的资源的默认系统资源字典名为 ThemeResources.xaml。 此文件在 Windows 软件开发工具包 (SDK) 安装的 (Program Files) \Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP<SDK version>\Generic 文件夹中可用。
以前版本的说明
Windows 8.x 默认情况下,应用使用 themeresources.xaml 文件中的“深色”主题 (运行,“深色”资源的键名称为“Default”) 。
- 在 Windows 上,将 RequestedTheme 设置为 ElementTheme.Default 将始终导致主题为“深色”。
- 在Windows Phone,使用 ElementTheme.Default 值将导致查询用户设置的系统主题。