2013-05-28 112 views
2

我在與DataGridRowBackground周圍亂搞,我發現了一些奇怪的東西。
一個DataGridRow的背景顏色呈白色,如果你打印出來,你會得到以下輸出:DataGridRow的默認值背景屬性

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

如果打印Brushes.White,你得到同樣的事情:

System.Console.WriteLine(Brushes.White); 
-----OUTPUT----- 
#FFFFFFFF 

現在, compairing當他們:

System.Console.WriteLine(Brushes.White.Equals(row.Background)); 
-----OUTPUT----- 
False 

它說,他們是不同的,這是奇怪的,因爲他們都是SolidColorBrush#FFFFFFFF值。

DataGridRow不能使用Brushes.White是否有特殊原因?
它是預定義的SolidBrushColor

回答

1

這是因爲您正在比較畫筆而不是顏色。 SolidColorBrush也不Brush覆蓋Equals方法,因此你的比較它通過引用和一個畫筆不總是等於另一個相同顏色的畫筆。控件將使用Windows中定義的SystemColors作爲默認值。爲了比較它,你需要知道他們都是SolidColorBrush,然後比較SolidColorBrush.Color