2

をいじっていて、変DataGridRowBackgroundものを見つけました。
の背景色は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ですか?

4

1 に答える 1

1

色ではなくブラシを比較しているためです。メソッドをオーバーライドしSolidColorBrushないため、参照によって比較しており、あるブラシが同じ色の別のブラシと常に等しいとは限りません。コントロールは、Windows で定義されているように、デフォルト値として を使用します。それを比較するには、それらが両方であることを知ってから比較する必要がありますBrushEqualsSystemColorsSolidColorBrushSolidColorBrush.Color

于 2013-05-28T15:19:40.817 に答える