我有一个类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事件。我该怎么做?
答案 0 :(得分:1)
遍历所有ProcessDates,每个Processdates迭代每个Measurement并订阅该事件。
在C#代码中:
foreach(var processData in value.ProcessDatas)
{
foreach(var measurement in processData.Measurements)
{
measurement.PropertyChanged += OnMeasurementPropertyChanged;
}
}
确保在设置新样本数据时取消订阅这些事件。此外,当您从ProcessData
删除某个衡量标准或从ProcessData
移除SampleData
时,您可能应该取消订阅个别事件。