为什么绑定到画笔数组元素的按钮的颜色没有显示在 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 接口并触发更改通知。
我正在尝试更改按钮被单击时的颜色。但它没有改变颜色。这是我的代码。
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 接口并触发更改通知。