2

我在搞乱DataGridRow's Background,我发现了一些奇怪的东西。
a 的背景颜色DataGridRow显示为白色,如果打印它,则会得到以下输出:

System.Console.WriteLine(row.Background.ToString());
-----OUTPUT-----
#FFFFFFFF

如果你 print 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吗?

4

1 回答 1

1

这是因为您在比较画笔,而不是颜色。SolidColorBrush也没有Brush覆盖Equals方法,因此您通过引用进行比较,并且一个画笔并不总是等于另一个具有相同颜色的画笔。控件将使用SystemColorsWindows 中定义的默认值。要比较它,您需要知道它们都是SolidColorBrush然后比较SolidColorBrush.Color

于 2013-05-28T15:19:40.817 回答