Freigeben über


Application.RequestedTheme Eigenschaft

Definition

Ruft einen Wert ab, der die Hell-Dunkel-Einstellung für das Gesamtdesign einer App bestimmt, oder legt diesen fest.

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

Eigenschaftswert

Ein Wert aus der Enumeration. Der Anfangswert ist das Standarddesign, das der Benutzer in den Windows-Einstellungen festgelegt hat.

Beispiele

In diesem Beispiel wird gezeigt, wie Das angeforderte Design in den lokalen App-Einstellungen gespeichert und dann abgerufen und angewendet wird, wenn die App neu gestartet wird.

Achtung

Dieses vereinfachte Beispiel hängt von der Reihenfolge der Optionsfelder ab, die den ApplicationTheme Enumerationswerten entsprechen: 0 = Hell, 1 = Dunkel. Wenn Sie sie in einer anderen Reihenfolge platzieren oder eine andere Benutzeroberfläche als Optionsfelder verwenden möchten, müssen Sie den Code entsprechend ändern.

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

Hinweise

Es gibt zwei integrierte Designs: "Hell" und "Dunkel". Standardmäßig wird Ihre App mit dem Design ausgeführt, das der Benutzer in den Windows-Einstellungen festgelegt hat (Einstellungen > Personalisierungsfarben >> Wählen Sie Ihren Standard-App-Modus aus). Sie können die Eigenschaft der App RequestedTheme so festlegen, dass der Benutzerstandard außer Kraft gesetzt wird, und angeben, welches Design verwendet wird. Wenn Sie eine Benutzeroberfläche bereitstellen, mit der der Benutzer ein helles oder dunkles Design für die App auswählen kann, sollten Sie auch eine Option bereitstellen, um zurück zur Standardeinstellung zu wechseln, d. h. die Option, die in den Windows-Personalisierungseinstellungen ausgewählt ist.

Das Design kann nur festgelegt werden, wenn die App gestartet wird, nicht während der Ausführung. Beim Versuch, das Festlegen RequestedTheme während der Ausführung der App festzulegen, wird eine Ausnahme ausgelöst (NotSupportedException für Microsoft .NET-Code). Wenn Sie dem Benutzer eine Option zum Auswählen eines Designs geben, das Teil der App-Benutzeroberfläche ist, müssen Sie die Einstellung in den App-Daten speichern und beim Neustart der App anwenden. (Weitere Informationen zu App-Einstellungen finden Sie unter Speichern und Abrufen von Einstellungen und anderen App-Daten).

Sie können bestimmte Designwerte zur Laufzeit ändern, nachdem Application.RequestedTheme angewendet wurde, wenn Sie die FrameworkElement.RequestedTheme-Eigenschaft verwenden und Werte für bestimmte Elemente auf der Benutzeroberfläche festlegen.

Es gibt auch ein Design "HighContrast", das Systemwerte verwendet, aber Apps und App-Code verwenden eine andere Technik, um die App auf hohen Kontrast umzuschalten. Die RequestedTheme Eigenschaft wird ignoriert, wenn der Benutzer im Modus mit hohem Kontrast ausgeführt wird. Siehe Kontrastdesigns und XAML-Beispiel mit hohem Kontrast.

Obwohl die App die Designs zur Laufzeit nicht wechseln kann, kann der Benutzer dies. Beispielsweise kann ein Benutzer ein Design mit hohem Kontrast aktivieren, während Ihre App ausgeführt wird, indem er die Tastenkombination ALT+UMSCHALT+PrtScn verwendet. In diesem Fall berechnet das XAML-Ressourcensystem die Ressourcenwerte für jede {ThemeResource}-Markuperweiterungsverwendung neu. Designbezogene Ressourcen wie Farben und Pinsel verwenden dann Werte, die für das aktuelle Design geeignet sind, auch wenn es nicht die App war, die dieses Design ursprünglich angefordert hat.

Die themenspezifischen Ressourcen werden in der Regel in einem separaten Ressourcenwörterbuch in XAML definiert. Dieses Ressourcenwörterbuch stammt aus der ThemeDictionaries-Eigenschaft des primären ResourceDictionary , das für Steuerelementvorlagen verwendet wird.

Gilt für:

Weitere Informationen