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

时间:2018-02-22 06:04:37

标签: c# wpf xaml ivalueconverter brush

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

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

我想做点什么:

default:
    return new SolidColorBrush(Button.DefaultBackground);

有没有办法解决这个问题?

3 个答案:

答案 0 :(得分:1)

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

SystemColors.WindowBrush很可能是您正在寻找的那个。它是"窗口客户区中的背景颜色。"

以下是关于如何使用后面代码中的画笔的示例代码:

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

因此,访问它们不需要特殊的技巧。

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

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

btn.ClearValue(BackgroundProperty);