Partilhar via


Application.RequestedTheme Propriedade

Definição

Obtém ou define um valor que determina a preferência claro-escuro para o tema geral de um aplicativo.

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" .../>

Valor da propriedade

Um valor da enumeração. O valor inicial é o tema padrão definido pelo usuário nas configurações do Windows.

Exemplos

Este exemplo mostra como salvar o tema solicitado nas configurações do aplicativo local e, em seguida, recuperá-lo e aplicá-lo quando o aplicativo for reiniciado.

Cuidado

Este exemplo simplificado depende da ordem das opções do botão de opção que correspondem aos ApplicationTheme valores de enumeração: 0 = Claro, 1 = Escuro. Se você quiser colocá-los em uma ordem diferente ou usar uma interface do usuário diferente dos botões de opção, você precisará modificar o código adequadamente.

<RadioButtons Header="App theme"
              SelectionChanged="AppTheme_SelectionChanged"
              Loaded="RadioButtons_Loaded">
    <x:String>Light</x:String>
    <x:String>Dark</x:String>
    <x:String>Use system setting</x:String>
</RadioButtons>
private void AppTheme_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (sender is RadioButtons rb)
    {
        // Save theme choice to LocalSettings. 
        // ApplicationTheme enum values: 0 = Light, 1 = Dark
        ApplicationData.Current.LocalSettings.Values["themeSetting"] = rb.SelectedIndex;
    }
}

private void RadioButtons_Loaded(object sender, RoutedEventArgs e)
{
    if (sender is RadioButtons rb)
    {
        // Set the RadioButtons selection to the saved value.
        rb.SelectedIndex = (int)ApplicationData.Current.LocalSettings.Values["themeSetting"];
    }
}

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 if saved value is Light or Dark.
        // Otherwise, don't set it and the Windows Personalization setting is used. 
        if ((int)value == 0 || (int)value == 1)
        {
            App.Current.RequestedTheme = (ApplicationTheme)(int)value;
        }
    }
}

Comentários

Há dois temas internos: "Claro" e "Escuro". Por padrão, seu aplicativo é executado usando o tema definido pelo usuário nas configurações do Windows (Configurações > Cores > de Personalização > Escolha o modo de aplicativo padrão). Você pode definir a propriedade do RequestedTheme aplicativo para substituir o padrão do usuário e especificar qual tema é usado. Se você fornecer uma interface do usuário para permitir que o usuário selecione o tema claro ou escuro para o aplicativo, também deverá fornecer uma opção para voltar a usar o padrão, ou seja, a opção selecionada nas configurações de Personalização do Windows.

O tema só pode ser definido quando o aplicativo é iniciado, não enquanto ele está em execução. A tentativa de definir RequestedTheme enquanto o aplicativo está em execução gera uma exceção (NotSupportedException para o código do Microsoft .NET). Se você der ao usuário a opção de escolher um tema que faça parte da interface do usuário do aplicativo, salve a configuração nos dados do aplicativo e aplique-a quando o aplicativo for reiniciado. (Para obter mais informações sobre as configurações do aplicativo, consulte Armazenar e recuperar configurações e outros dados do aplicativo).

Você pode alterar valores de tema específicos em tempo de execução após Application.RequestedTheme a aplicação, se você usar a propriedade FrameworkElement.RequestedTheme e definir valores em elementos específicos na interface do usuário.

Há também um tema "HighContrast" que usa valores do sistema, mas os aplicativos e o código do aplicativo usam uma técnica diferente para alternar o aplicativo para alto contraste. A RequestedTheme propriedade será ignorada se o usuário estiver em execução no modo de alto contraste. Confira Temas de contraste e exemplo de alto contraste XAML.

Embora o aplicativo não possa alternar os temas em tempo de execução, o usuário pode. Por exemplo, um usuário pode habilitar um tema de alto contraste enquanto seu aplicativo está em execução, usando o atalho de tecla Alt+Shift+PrtScn. Se isso acontecer, o sistema de recursos XAML recalculará os valores de recurso para qualquer uso de extensão de marcação {ThemeResource} . Recursos apropriados para o tema, como cores e pincéis, usam valores apropriados para o tema atual, mesmo que não tenha sido o aplicativo que solicitou esse tema originalmente.

Os recursos que são específicos do tema normalmente são definidos em um dicionário de recursos separado em XAML. Esse dicionário de recursos vem da propriedade ThemeDictionaries do ResourceDictionary primário que é usado para modelos de controle.

Aplica-se a

Confira também