c# - studio - ¿Cómo puedo establecer el color de un control WPF en un color de sistema mediante programación, para que se actualice en los cambios de esquema de color?
como poner botones redondos en c# (4)
¿Cómo puedo hacer esto en el código subyacente de WPF?
<Grid Background="{DynamicResource {x:Static SystemColors.DesktopBrushKey}}"/>
.NET Framework Compatible con: 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
this.background=SystemColors.HighlightBrush;
Acabo de encontrar una solución fea:
grid1.SetResourceReference(
Control.BackgroundProperty,
SystemColors.DesktopBrushKey);
Espero que alguien publique uno mejor (me gustaría ver algo como grid1.Background = BackgroundBrush, porque la sintaxis de SetResourceReference es un paso atrás de Windows Forms).
Esto debe haberse agregado a una versión posterior de WPF ya que se publicó originalmente porque el código original funciona bien para mí (estoy usando WPF 4.5)
<Grid Background="{DynamicResource {x:Static SystemColors.DesktopBrushKey}}"/>
Los métodos de extensión pueden ayudar:
public static class FrameworkElementExtensions
{
// usage xPanel.SetBackground(SystemColors.DesktopBrushKey);
public static void SetBackground(this Panel panel, ResourceKey key)
{
panel.SetResourceReference(Panel.BackgroundProperty, key);
}
// usage xControl.SetBackground(SystemColors.DesktopBrushKey);
public static void SetBackground(this Control control, ResourceKey key)
{
control.SetResourceReference(Control.BackgroundProperty, key);
}
}