Application.RequestedTheme Propriedade

Definição

Obtém ou define um valor que determina a preferência de escuro claro 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 de 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.

Caution

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, será necessário 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 em configurações de Windows (Configurações > cores de personalização >> escolha seu modo de aplicativo padrão). Você pode definir a propriedade do aplicativo para substituir o padrão do RequestedTheme 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, você 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 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 (NotSupportedExceptionpara Microsoft .NET código). Se você der ao usuário uma opção para escolher um tema que faça parte da interface do usuário do aplicativo, você deverá salvar a configuração nos dados do aplicativo e aplicá-la 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 aplicativos e código de 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. Veja os temas Contrast e o 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 no XAML. Esse dicionário de recursos vem da propriedade ThemeDictionaries do ResourceDictionary primário usado para modelos de controle.

Aplica-se a

Confira também