Partager via


Application.RequestedTheme Propriété

Définition

Obtient ou définit une valeur qui détermine la préférence clair-foncé pour le thème global d’une application.

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

Valeur de propriété

Valeur de l’énumération. La valeur initiale est le thème par défaut défini par l’utilisateur dans les paramètres Windows.

Exemples

Cet exemple montre comment enregistrer le thème demandé dans les paramètres de l’application locale, puis le récupérer et l’appliquer lorsque l’application est redémarrée.

Attention

Cet exemple simplifié dépend de l’ordre des options de case d’option correspondant aux valeurs d’énumération ApplicationTheme : 0 = Clair, 1 = Sombre. Si vous souhaitez les placer dans un autre ordre ou utiliser une interface utilisateur autre que les cases d’option, vous devez modifier le code en conséquence.

<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;
        }
    }
}

Remarques

Il existe deux thèmes intégrés : « Light » et « Dark ». Par défaut, votre application s’exécute à l’aide du thème défini par l’utilisateur dans les paramètres Windows (Paramètres > Couleurs > de personnalisation > Choisissez votre mode d’application par défaut). Vous pouvez définir la propriété de RequestedTheme l’application pour remplacer la valeur par défaut de l’utilisateur et spécifier le thème utilisé. Si vous fournissez une interface utilisateur pour permettre à l’utilisateur de sélectionner un thème clair ou sombre pour l’application, vous devez également fournir une option permettant de revenir à l’utilisation de la valeur par défaut, c’est-à-dire l’option sélectionnée dans les paramètres de personnalisation Windows.

Le thème ne peut être défini qu’au démarrage de l’application, et non pendant son exécution. La tentative de définition RequestedTheme pendant l’exécution de l’application lève une exception (NotSupportedException pour le code Microsoft .NET). Si vous donnez à l’utilisateur la possibilité de choisir un thème qui fait partie de l’interface utilisateur de l’application, vous devez enregistrer le paramètre dans les données de l’application et l’appliquer lors du redémarrage de l’application. (Pour plus d’informations sur les paramètres d’application, consultez Stocker et récupérer des paramètres et d’autres données d’application).

Vous pouvez modifier des valeurs de thème spécifiques au moment de l’exécution après Application.RequestedTheme l’application, si vous utilisez la propriété FrameworkElement.RequestedTheme et définissez des valeurs sur des éléments spécifiques dans l’interface utilisateur.

Il existe également un thème « HighContrast » qui utilise des valeurs système, mais les applications et le code d’application utilisent une technique différente pour basculer l’application vers un contraste élevé. La RequestedTheme propriété est ignorée si l’utilisateur s’exécute en mode contraste élevé. Consultez Thèmes de contraste et exemple de contraste élevé XAML.

Bien que l’application ne puisse pas changer les thèmes au moment de l’exécution, l’utilisateur le peut. Par exemple, un utilisateur peut activer un thème à contraste élevé pendant l’exécution de votre application, à l’aide du raccourci touche Alt+Maj+PrtScn. Dans ce cas, le système de ressources XAML recalcule les valeurs de ressource pour toute utilisation de l’extension de balisage {ThemeResource} . Les ressources appropriées au thème, telles que les couleurs et les pinceaux, utilisent ensuite des valeurs appropriées pour le thème actuel, même si ce n’est pas l’application qui a demandé ce thème à l’origine.

Les ressources spécifiques au thème sont généralement définies dans un dictionnaire de ressources distinct en XAML. Ce dictionnaire de ressources provient de la propriété ThemeDictionaries du ResourceDictionary principal utilisé pour les modèles de contrôle.

S’applique à

Voir aussi