我有一个域模型Viper。BindableObject 实现所有 INotifyPropertyChanged 接口。简化模型:
public class Viper : BindableObject
{
public int CaseId { get; set; }
public string SerialNumber { get; set; }
private byte _status;
public Byte Status
{
get { return _status; }
set { SetField(ref _status, value, "Status"); }
}
private List<CasePersonnel> _personnel;
public List<CasePersonnel> Personnel
{
get { return _personnel; }
set { SetField(ref _personnel, value, "Personnel"); }
}
private List<CaseFluids> _caseFluidList;
public List<CaseFluids> CaseFluidsList
{
get { return _caseFluidList; }
set { SetField(ref _caseFluidList, value, "CaseFluidsList"); }
}
public List<Gauge> Gauges { get; set; }
}
仪表是此类型的列表:
public class Gauge : BindableObject
{
public int GaugeId { get; set; }
public int ChannelId { get; set; }
public string Units { get; set; }
public string Code { get; set; }
private double? _value;
public double? Value
{
get { return _value; }
set { SetField(ref _value, value, "Value"); }
}
private bool? _showAlarm;
public bool? ShowAlarm
{
get { return _showAlarm; }
set { SetField(ref _showAlarm, value, "ShowAlarm"); }
}
public DateTime? TimeStamp { get; set; }
public double? Minimum { get; set; }
public double? Maximum { get; set; }
}
我创建了一个引用Viper域模型的视图模型,并添加了一个InAlarm属性:
public class ViperViewModel : BindableObject
{
#region Constructors
public ViperViewModel(Viper viper)
{
InstanceViper = viper;
}
#endregion
public Viper InstanceViper { get; set; }
private bool _inAlarm;
public virtual bool InAlarm
{
get { return _inAlarm; }
set { SetField(ref _inAlarm, value, "InAlarm"); }
}
}
我有一个用户控件边框,我想将其绑定到 ViperViewModel 的 InAlarm 属性(闪烁红色)。但是,如果 InstanceViper.Gauge 的任何 ShowAlarm 属性为真,则需要 ViperViewModel.InAlarm 属性为真。当应用程序从外部源接收数据时,该仪表属性将更新。当基础域模型的仪表之一时,如何/应该更新视图模型的 InAlarm 属性。显示警报属性设置为 true?
在更改ShowAlarm
时Gauge
创建一个EventHandler<AlarmedEventArgs>
event
。
创建具有public bool?
属性的AlarmedEventArgs
。
ViperViewModel
中的事件,该方法应在触发时设置InAlarm
。