如何获取 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);
我有一个转换器可以将枚举转换为 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);