Application.RequestedTheme Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Dient zum Abrufen oder Festlegen eines Werts, der die Hell-Dunkel-Einstellung für das allgemeine Design einer App bestimmt.
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 der Aufzählung. Der Anfangswert ist das Standarddesign, das der Benutzer in Windows Einstellungen festgelegt hat.
Beispiele
In diesem Beispiel wird gezeigt, wie Das angeforderte Design in den lokalen App-Einstellungen gespeichert und anschließend abgerufen und angewendet wird, wenn die App neu gestartet wird.
Vorsicht
Dieses vereinfachte Beispiel hängt von der Reihenfolge der Optionsfeldoptionen 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 Vom Benutzer festgelegten Design in Windows Einstellungen ausgeführt (Einstellungen > für Personalisierungsfarben >> wählen Den Standard-App-Modus aus). Sie können die Eigenschaft der App RequestedTheme so festlegen, dass die Standardeinstellung des Benutzers 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 Verwendung der Standardeinstellung zurückzukehren, d. h. die Option, die in Windows Personalisierungseinstellungen ausgewählt ist.
Das Design kann nur festgelegt werden, wenn die App gestartet wird, nicht während sie ausgeführt wird. Wenn Sie versuchen, festzulegenRequestedTheme, während die App ausgeführt wird, wird eine Ausnahme ausgelöst (NotSupportedException für Microsoft .NET Code). Wenn Sie dem Benutzer die Möglichkeit geben, ein Design auszuwählen, das Teil der App-UI ist, müssen Sie die Einstellung in den App-Daten speichern und anwenden, wenn die App neu gestartet wird. (Weitere Informationen zu App-Einstellungen finden Sie unter Store und Abrufen von Einstellungen und anderen App-Daten).
Sie können bestimmte Designwerte zur Laufzeit nach Application.RequestedTheme der Anwendung ändern, wenn Sie die Eigenschaft "FrameworkElement.RequestedTheme " verwenden und Werte für bestimmte Elemente in 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 in hohen Kontrast zu wechseln. Die RequestedTheme Eigenschaft wird ignoriert, wenn der Benutzer im Modus mit hohem Kontrast ausgeführt wird. Siehe Beispiel für Kontrastdesigns und XAML-Beispiel für hohen Kontrast.
Obwohl die App die Designs zur Laufzeit nicht wechseln kann, kann der Benutzer. Ein Benutzer kann z. B. ein Design mit hohem Kontrast aktivieren, während die App ausgeführt wird, mithilfe der Tastenkombination ALT+UMSCHALT+PrtScn. In diesem Fall berechnet das XAML-Ressourcensystem die Ressourcenwerte für jede {ThemeResource}-Markuperweiterungsverwendung neu. Designgerechte Ressourcen wie Farben und Pinsel verwenden dann Werte, die für das aktuelle Design geeignet sind, obwohl es nicht die App war, die das Design ursprünglich angefordert hat.
Die designspezifischen Ressourcen werden in der Regel in einem separaten Ressourcenwörterbuch in XAML definiert. Dieses Ressourcenverzeichnis stammt aus der ThemeDictionaries-Eigenschaft des primären ResourceDictionary , das für Steuerelementvorlagen verwendet wird.