为什么绑定到画笔数组元素的按钮的颜色没有显示在 UI 中?

Why is the color of my button which is bind to an element of a brush array is not showing in the UI?

我正在尝试更改按钮被单击时的颜色。但它没有改变颜色。这是我的代码。

private SolidColorBrush[] _btnBrush;
        public SolidColorBrush[] btnBrush
        {
            get
            {
                return _btnBrush;
            }
            set
            {
                _btnBrush = value; OnPropertyChanged("btnBrush");
            }
        }

     public MineViewModel()
        {
         for (int i = 0; i < 100; i++)
             btnBrush[i] = (SolidColorBrush)new BrushConverter().ConvertFrom("#EED6C4");
}

按钮绑定的方法

public void LeftClick(string id_no)
        {
          btnBrush[Convert.ToInt32(id_no)] = (SolidColorBrush)new BrushConverter().ConvertFrom("#B3541E");
        }

和 XAML

<Button x:Name="btn4" Background="{Binding btnBrush[3]}" Command="{Binding LeftClickCommand}" CommandParameter="3"/>

执行正确,数组中的元素也得到了颜色。但它不会显示在 UI 上。 如果我用一个单一的实心刷子绑定它,它就可以工作。但不是用刷子阵列。 有帮助吗?

表达式

btnBrush[i] = (SolidColorBrush)new BrushConverter().ConvertFrom("#B3541E");

不改变btnBrush属性的值。它甚至不调用 属性 setter.

但是您可以在元素索引 i 处更改 SolidColorBrush 的 Color 属性,例如

btnBrush[i].Color = (Color)new ColorConverter().ConvertFrom("#B3541E");

这将通知 UI,因为 Color 是一个依赖项 属性。否则,数组元素类型必须实现 INotifyPropertyChanged 接口并触发更改通知。