在声明变量和构造函数时,我可以使用 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
或从该类继承。