当 List<> 的任何项目更新时,如何更新视图模型属性?



我有一个域模型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?

在更改ShowAlarmGauge创建一个EventHandler<AlarmedEventArgs> event

创建具有public bool?属性的AlarmedEventArgs

订阅

ViperViewModel 中的事件,该方法应在触发时设置InAlarm

相关内容

  • 没有找到相关文章

最新更新