Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 2 Min.

WPF/VB: Windows-Dark-Theme erkennen

Will der Anwender statt im üblichen Lightmode mit weißen Hintergründen lieber im Darkmode arbeiten, sollte eine App darauf reagieren können.
Aber wie erkennt eine App, ob der Anwender in seinem Windows-System den dunklen Modus eingestellt hat? Die Antwort: Ganz einfach, es steht in der Registry und die kann man ja auslesen. Wie das klappt hat David Rickard in diesem Blogbeitrag für C# ausgearbeitet. Er berücksichtigt dabei auch den Hohen-Kontrast-Modus und hat eine Routine verfasst, so dass ein Programm den Wechsel des Modus permanent überwachen kann. Hier finden Sie die Kernroutine GetWindowsTheme(), welche das in der Registry gespeicherte Thema (Light/Dark) ermittelt in Form von Visual-Basic-Code (getestet unter Windows 10).
...
Const RegistryKeyPath = "Software\Microsoft\Windows\CurrentVersion\Themes\Personalize"
Const RegistryValueName = "AppsUseLightTheme"

Private Enum WindowsTheme
  Light
  Dark
End Enum 

Private Shared Function GetWindowsTheme() As WindowsTheme
  Using key As Microsoft.Win32.RegistryKey =
    Microsoft.Win32.Registry.CurrentUser.OpenSubKey(RegistryKeyPath)
    Dim registryValueObject As Object = key?.GetValue(RegistryValueName)
    If registryValueObject Is Nothing Then
      Return WindowsTheme.Light
    End If
    Dim registryValue As Integer = CInt(registryValueObject)
    Return If(registryValue > 0, WindowsTheme.Light, WindowsTheme.Dark)
  End Using
End Function 
... 
Mehr zur hier genutzten Klasse RegistryKey finden Sie hier. Die Funktion liefert entweder WindowsTheme.Light oder WindowsTheme.Dark zurück. Hier noch ein Beispiel, wie das Programm darauf reagieren könnte (tb ist dabei eine das Fenster ausfüllende WPF-Textbox):
Private Sub MainWindow_Loaded(...) Handles Me.Loaded
  Dim theme As String = GetWindowsTheme().ToString
  If theme = "Dark" Then
    tb.Background = Brushes.Black
    tb.Foreground = Brushes.NavajoWhite
    tb.FontSize = 32
    tb.FontWeight = FontWeights.UltraBold
    tb.Text = " D a r k m o d e !! "
  End If
End Sub 
Miscellaneous

Neueste Beiträge

Batterie-Management mit SignalRC - Der DDC-Truck, Teil 4
Das Batterie-Management-System (BMS) von RC-Modellen benötigt verlässliche Telemetrie.
6 Minuten
12. Feb 2026
SignalRC WebRTC - Der DDC-Truck, Teil 3
WebRTC ist als Tool ideal geeignet, um Videodaten von RC-Modellen in Echtzeit zu übertragen.
7 Minuten
Vektorfunktionen mit pgvector in PostgreSQL - Indizes & Co. in PostgreSQL, Teil 6
Bei der Vektorsuche legt PostgreSQL mit pgvector den Schwerpunkt auf Kombinierbarkeit: Vektoren werden zu sortierbaren Werten, <-> wird zu einem erstklassigen Ordnungsoperator und HNSW wird zu einer weiteren Indexzugriffsmethode, die der Planer berücksichtigen kann.
6 Minuten

Das könnte Dich auch interessieren

SignalRC – in Echtzeit ans Steuer - Der DDC-Truck: Auf in die Welt mit SignalR, Raspberry Pi und sechs Rädern
Ein vernetztes Fahrzeug, gesteuert per Weboberfläche und LTE. SignalR sorgt dabei für millisekundenschnelle Kommunikation – direkt, stabil und skalierbar.
16 Minuten
21. Jan 2026
Version 30 von List & Label mit neuen Cloud-Funktionen - Reportgenerator
Die neue Version des Reporting-Tools List & Label unterstützt Entwickler:innen mit neuen Features, die speziell für Cloud- und Webumgebungen konzipiert sind.
2 Minuten
21. Okt 2024
PWM und Servo-Steuerung mit .NET - Der DDC-Truck, Teil 1
Pulsweitenmodulation als technische Grundlage der digitalen Steuerung von RC-Modellen.
8 Minuten
21. Jan 2026
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige