我正在与DataGridRow
Background
混在一起,我发现了一些奇怪的东西。
DataGridRow
的背景颜色显示为白色,如果您打印它,则会得到以下输出:
System.Console.WriteLine(row.Background.ToString());
-----OUTPUT-----
#FFFFFFFF
如果你打印Brushes.White
,你会得到同样的结果:
System.Console.WriteLine(Brushes.White);
-----OUTPUT-----
#FFFFFFFF
现在,在计算它们时:
System.Console.WriteLine(Brushes.White.Equals(row.Background));
-----OUTPUT-----
False
它说它们是不同的,这很奇怪,因为它们都是SolidColorBrush
,#FFFFFFFF
值。
DataGridRow
是否有特定原因不使用Brushes.White
?
它是预定义的SolidBrushColor
吗?
答案 0 :(得分:1)
这是因为你在比较画笔,而不是颜色。 SolidColorBrush
也不Brush
覆盖Equals
方法,因此您通过引用比较它并且一个画笔并不总是等于另一个具有相同颜色的画笔。控件将使用Windows中定义的SystemColors
作为默认值。要进行比较,您需要知道它们都是SolidColorBrush
,然后比较SolidColorBrush.Color