0

ドメイン モデル 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; }
}

Gauges は、次のタイプのリストです。

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 プロパティのいずれかが true の場合、ViperViewModel.InAlarm プロパティを true にする必要があります。このゲージ プロパティは、アプリケーションが外部ソースからデータを受け取ると更新されます。基になるドメイン モデルの Gauge.ShowAlarm プロパティの 1 つが true に設定されたときに、ビューモデルの InAlarm プロパティを更新するにはどうすればよいですか?

4

1 に答える 1

0

が変更されたときに発生する を作成しますEventHandler<AlarmedEventArgs> eventGaugeShowAlarm

AlarmedEventArgsプロパティを持つ を作成しpublic bool?ます。

イベントをサブスクライブすると、トリガー時にViperViewModelメソッドが設定されます。InAlarm

于 2012-04-23T17:55:56.383 に答える