在 MVVM WPF 中的按钮单击上更改标签的背景颜色时出现问题



在声明变量和构造函数时,我可以使用 MVVM WPF 处理标签的背景颜色,但在按钮事件等其他事件上,它不会改变颜色。

XAML 代码

<Label Content="{Binding MessageArea1Content}" Height="25" Width="830"
Name="level2LBL" Background="{Binding Path=BrushMessageArea1}" 
Foreground="White" HorizontalContentAlignment="Center" 
VerticalContentAlignment="Center" FontWeight="Bold" 
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0,5,0,0"/>

法典

private Brush _brushMessageArea2 = Brushes.Green;
public Brush BrushMessageArea2
{
get { return _brushMessageArea2; }
set { _brushMessageArea2 = value; }
}
public HomeViewModel()
{   
PutCommand = new DelegateCommand(OnPutCommand);
BrushMessageArea1 = Brushes.Red; //new SolidColorBrush((Color)ColorConverter.ConvertFromString("Red"));

private async void OnPutCommand()
{
BrushMessageArea1 = Brushes.Red; //new SolidColorBrush((Color)ColorConverter.ConvertFromString("Red"));
}
}

PUTCommand它不起作用。

目前尚不清楚BrushMessageArea2在那里做什么,因为它既不在绑定中,也不在提供的任何方法中。

但是,假设BrushMessageArea1遵循与BrushMessageArea2相同的格式(带有支持字段),则可以通过添加OnPropertyChanged(nameof(BrushMessageArea1)来更新 XAML 中的Brush属性,如下所示:

private Brush _brushMessageArea1;
public Brush BrushMessageArea1
{
get => return _brushMessageArea1;
set 
{ 
_brushMessageArea1 = value; 
OnPropertyChanged(nameof(BrushMessageArea1));
}
}

但是,请注意,此方法要求您在其中实现此目的的类继承自INotifyPropertyChanged或从该类继承。

最新更新