我在摆弄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它说它们是不同的,这很奇怪,因为它们都是带有#FFFFFFFF值的SolidColorBrush。
DataGridRow不使用Brushes.White有什么特别的原因吗?
它是预定义的SolidBrushColor吗?
发布于 2013-05-28 23:19:41
这是因为你比较的是画笔,而不是颜色。SolidColorBrush或Brush重写Equals方法,因此您是通过引用来比较它,并且一个笔刷并不总是等于具有相同颜色的另一个笔刷。控件将使用在Windows中定义的SystemColors作为默认值。要比较它,您需要知道它们都是SolidColorBrush,然后比较SolidColorBrush.Color
https://stackoverflow.com/questions/16795010
复制相似问题