You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF中无法正确检查矩形Fill状态问题求助

解决WPF矩形Fill属性判断失败的问题

你遇到的问题核心是引用相等与值相等的差异:BrushConverter.ConvertFromString每次调用都会生成一个全新的SolidColorBrush实例——哪怕颜色值完全一致,两个实例在内存中的引用地址也不相同。而你用==判断时,默认是比较对象的引用,自然匹配不上。

下面给你几种可行的解决方案:

方案1:比较Brush的Color属性

直接对比颜色的具体值,不管Brush实例是不是同一个,只要颜色值一致就能匹配:

// 先判断Fill是SolidColorBrush类型,避免类型转换异常
if (RMaximize.Fill is SolidColorBrush currentBrush && currentBrush.Color == CustomGreen.Color)
{
    Driver.Manage().Window.Maximize();
}

方案2:使用Brush的Equals方法

SolidColorBrush重写了Equals方法,会对比颜色值而非引用地址,所以可以直接调用:

// 先判断Fill不为null,避免空引用异常
if (RMaximize.Fill != null && CustomGreen.Equals(RMaximize.Fill))
{
    Driver.Manage().Window.Maximize();
}

方案3:确保复用同一个Brush实例

如果你能保证所有设置Fill的地方都只用你预先定义的CustomGreen和CustomRed实例(就像你现在的点击切换代码那样),那其实也可以用==判断——但这种方式风险较高,一旦其他地方用了相同颜色的新Brush实例,判断就会失效,所以更推荐前两种方案。

内容的提问来源于stack exchange,提问作者Sen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:40:38