我有一个将枚举转换为WPF画笔的转换器。
所以基本上我会根据提供的enum
值返回画笔。
我唯一的问题是获取系统使用的默认画笔。
我想做点什么:
default:
return new SolidColorBrush(Button.DefaultBackground);
有没有办法解决这个问题?
答案 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);