如何获取 WPF 按钮的默认背景画笔

How to get the default BackGround brush of a WPF button

我有一个转换器可以将枚举转换为 WPF 画笔。 所以基本上我 return 根据提供的 enum 值刷。

我唯一的问题是获取系统使用的默认画笔。

我想做这样的事情:

default:
    return new SolidColorBrush(Button.DefaultBackground);

有办法解决吗?

您可以从 System.Windows.SystemColors 中找到默认颜色和画笔。

SystemColors.WindowBrush 很可能就是您要找的人。这是 "The background color in the client area of a window."

以下是有关如何使用隐藏代码中的画笔的示例代码:

    private void FrameworkElement_OnLoaded(object sender, RoutedEventArgs e)
    {
        this.MyButton.Background = SystemColors.HighlightBrush;
    }

因此无需特殊技巧即可访问它们。

您可以将默认颜色存储在变量中。要获得默认颜色,我将构建一个新控件(您想要默认颜色的类型)。之后,您可以使用此控件的默认值 brush/color(使用默认构造函数时,新控件会使用其默认值进行初始化)。

例如:如果它是一个按钮,你可以这样做:

    static private Brush defaultButtonBackground = null;
    public Brush DefaultButtonBackground
    {
        get
        {
            if(defaultButtonBackground == null)
            {
                defaultButtonBackground = new Button().Background;
            }
            return defaultButtonBackground;
        }
    }

我并不是说这是唯一的解决方案,但通过像这样实现 属性,您只需创建一次临时默认按钮,并存储其画笔。

这不是对原始问题的回答,但可能对未来的读者有所帮助。根据您的情况,另一种选择是通过调用 ClearValue 来简单地删除背景 属性。

btn.ClearValue(BackgroundProperty);