33 votes

Comment puis-je définir la couleur d'un contrôle WPF sur une couleur système par programmation, afin qu'il se mette à jour en cas de modification du jeu de couleurs?

Comment puis-je le faire dans le code-back de WPF?

 <Grid Background="{DynamicResource {x:Static SystemColors.DesktopBrushKey}}"/>
 

14voto

csuporj Points 970

Je viens de trouver une mauvaise solution:

 grid1.SetResourceReference(
    Control.BackgroundProperty,
    SystemColors.DesktopBrushKey);
 

J'espère que quelqu'un en publiera un meilleur (j'aimerais voir quelque chose comme grid1.Background = BackgroundBrush, car la syntaxe de SetResourceReference est un pas en arrière par rapport aux formulaires Windows).

6voto

orca Points 6807

Les méthodes d'extension peuvent aider:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X