【发布时间】:2019-07-20 17:16:43
【问题描述】:
我在一个有网格的 wpf 应用程序中有一个窗口。 网格有一个十六进制的背景值。 我只想从后面的代码中检查该背景的值是否是我真正的意思。
<Grid Background="#424242" Name="GridMain">
在我得到的代码中:
SolidColorBrush a = new SolidColorBrush();
var b = (SolidColorBrush)new BrushConverter().ConvertFrom("#424242");
MainWindow mainWin = Application.Current.MainWindow as MainWindow;
if (mainWin.GridMain.Background == b)
MDark.IsChecked = true;
我不得不提到 MDark 是一个单选按钮。 条件永远不会成立。 我很感激帮助。 :D
【问题讨论】:
-
为什么?您已经在设计时设置或定义了这些颜色。使用设计器比较颜色。或者将画笔定义为资源(例如
x:Key="DefaultBackgroundBrush")并在应用程序中重用它们(例如Grid.Background="{StaticResource DefaultBackgroundBrush}"。 -
您正在比较实例引用。请改用
Equals()。或者比较Color的值。