在WPF的运用过程中,可能很多人对Brushes和Colors这两个类不太熟悉,但是可以肯定的是,我们经常都会用到这两个类。那什么情况下会用到这两个类呢?如下示例代码所示:
Brushes使用场景:
<Button Background="AliceBlue">A Button</Button>
Colors使用场景:
<Button>B Button
<Button.Background>
<SolidColorBrush Color="AliceBlue" />
</Button.Background>
</Button>
以上两种实现方式都能给Button按钮设置背景颜色,当然大多数时候我们都喜欢使用第一种方式,个中缘由不言自明。但是长期的这种使用过程中,我们都忽视了Brushes的功劳,那怎么去理解这个类呢?通过查阅Button类的定义,我们发现,Background是由Brush这个类定义的,说到Brush就不得不提一下SolidColorBrush,也即是纯色画刷。我们想要设置某个控件的背景颜色为纯色的时候,必然会用到这个画刷,那在Brushes使用场景代码里,是怎么用到这个画刷呢?查阅Brushes的定义,我们发现这个类里定义了很多静态的只读属性,如:AliceBlue、Red、Green,这些属性都是通过SolidColorBrush来进行定义的。因此我们在使用上图第一个示例代码的时候,实际的后台逻辑代码应如下:
Button btn = new Button();
btn.Content = "后台按钮1";
btn.Background = Brushes.AliceBlue;
说到这里,基本上Colors的使用场景也应该差不多明了了,Colors也是和Brushes一样的工作原理,SolidColorBrush的属性Color是由Color类定义的,在给SolidColorBrush赋值系统预定义颜色的时候,会调用Colors里定义好的由Color定义的静态属性对象,实际后台示例代码如下:
Button btn = new Button();
btn.Content = "后台按钮2";
var scb = new SolidColorBrush();
scb.Color = Colors.AliceBlue;
btn.Background = scb;
以上就是我对这两个类的理解,如有错误,请欢迎指正。