回应后代类PropertyChanged事件

时间:2011-03-10 21:12:25

标签: c# .net vb.net visual-studio

我有一个类BaseSample,它使用另一个类MainData作为其中一个字段:

Protected _sampleData As MainData

Public Property SampleData() As MainData

    Get

        Return _sampleData

    End Get

    Set(ByVal value As MainData)

        _sampleData = value

    End Set


End Property

MainData又有一个类ProcessData的集合,作为一个字段,ProcessData有一个类的集合,Measurement,作为一个字段。即:

  

MainData

|- IEnumerable (Of ProcessData)

    |- IEnumerable (Of Measurement)

这些类是LINQ to SQL文件中的实体。在Measurement类中,当CrucibleOxidizedMass属性发生更改时,我引发了PropertyChanged事件:

Private Sub OnCrucibleOxidizedMassChanged()

    RaiseEvent PropertyChanged(Me, New ComponentModel.PropertyChangedEventArgs("CrucibleOxidizedMass"))

End Sub

在BaseSample类中,我想在任何后代的Measurment实例中响应CrucibleOxidizedMass PropertyChanged事件。我该怎么做?

1 个答案:

答案 0 :(得分:1)

遍历所有ProcessDates,每个Processdates迭代每个Measurement并订阅该事件。

在C#代码中:

foreach(var processData in value.ProcessDatas)
{
    foreach(var measurement in processData.Measurements)
    {
        measurement.PropertyChanged += OnMeasurementPropertyChanged;
    }
}

确保在设置新样本数据时取消订阅这些事件。此外,当您从ProcessData删除某个衡量标准或从ProcessData移除SampleData时,您可能应该取消订阅个别事件。