如何以编程方式将WPF控件的颜色设置为系统颜色,以便更新颜色方案更改?

时间:2009-03-09 23:53:57

标签: c# wpf

如何在WPF的代码隐藏中执行此操作?

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

4 个答案:

答案 0 :(得分:14)

我刚刚发现了一个丑陋的解决方案:

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

我希望有人发布更好的内容(我希望看到类似grid1.Background = BackgroundBrush的东西,因为SetResourceReference的语法是从Windows Forms向后退一步)。

答案 1 :(得分:6)

扩展方法可能有所帮助:

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

答案 2 :(得分:6)

这必须已经添加到WPF的更高版本中,因为最初发布的是因为您的原始代码适用于我(我正在使用WPF 4.5)

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

答案 3 :(得分:2)