Wie kann ich die Farbe eines WPF-Steuerelements programmgesteuert auf eine Systemfarbe festlegen, damit es bei Farbschemaänderungen aktualisiert wird?
Wie kann ich dies in WPF und im CodeBehind?
<Grid Background="{DynamicResource {x:Static SystemColors.DesktopBrushKey}}"/>
Kommentar zu dem Problem - Öffnen
Vielen Dank für das posten dieser Frage. Ich bin immer noch lernen, WPF und ich konnte nicht herausfinden, wie dies zu tun in XAML, aber Ihre Frage zeigt genau, wie es geht. Ich habe dieses anstatt: <Grid Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> Danke!
FWIW, die Sie nicht brauchen, um zu definieren, die DynamicResource, können Sie den Zugriff auf die statischen Pinsel direkt: Background="{x:Static SystemColors.ControlBrush}"
Ich revidiere meine früheren Kommentar: Sie müssen angeben, eine DynamicResource wenn Sie denken, dass Ihre Benutzer ändern Sie das system-theme, während die Anwendung ausgeführt wird. Wenn Sie nur die {x:Static ... } und das Thema änderungen, die Ihre Anwendung Farben nicht passen. Auch DynamicResource ist notwendig, wenn Sie einen Stil, der Setter, z.B. <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />.
InformationsquelleAutor der Frage Csupor Jenő | 2009-03-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich eine hässliche Lösung:
Ich hoffe, dass jemand nach einer besseren (ich würde gerne sehen, so etwas wie grid1.Hintergrund = BackgroundBrush, weil die syntax von SetResourceReference ist ein Schritt rückwärts aus Windows Forms).
InformationsquelleAutor der Antwort Csupor Jenő
Erweiterung Methoden die helfen könnten:
InformationsquelleAutor der Antwort orcun
Diesem müssen wurden Hinzugefügt, um eine neuere version von WPF, da diese ursprünglich gebucht, da Sie Ihre original-code funktioniert gut für mich (ich bin mit WPF 4.5)
<Grid Background="{DynamicResource {x:Static SystemColors.DesktopBrushKey}}"/>
InformationsquelleAutor der Antwort jt000
.NET Framework Unterstützt: 3.0
https://msdn.microsoft.com/en-us/library/system.windows.systemcolors.highlightbrush(v=vs. 85).aspx
https://msdn.microsoft.com/en_us/library/system.windows.systemcolors.highlightbrushkey(v=vs. 85).aspx
InformationsquelleAutor der Antwort Nightly