Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 响应子类PropertyChanged事件_C#_.net_Vb.net_Visual Studio - Fatal编程技术网

C# 响应子类PropertyChanged事件

C# 响应子类PropertyChanged事件,c#,.net,vb.net,visual-studio,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 Pr

我有一个类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的集合作为字段。即:

主要数据

|- IEnumerable (Of ProcessData)

    |- IEnumerable (Of Measurement)
这些类是LINQ到SQL文件中的实体。在Measurement类中,当CrossbleOxidazedMass属性更改时,我引发PropertyChanged事件:

Private Sub OnCrucibleOxidizedMassChanged()

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

End Sub

在BaseSample类中,我希望在任何子代度量实例中响应CrossbleOxizedMass PropertyChanged事件。我该怎么做?

迭代所有ProcessDate,对于每个ProcessDate,迭代每个度量并订阅事件

在C#代码中:


设置新样本数据时,请确保取消订阅这些事件。此外,当从
ProcessData
中删除度量值或从
SampleData
中删除
ProcessData
时,您可能应该取消订阅单个事件,遍历所有ProcessDate,对于每个ProcessDate,遍历每个度量值并订阅事件

在C#代码中:


设置新样本数据时,请确保取消订阅这些事件。此外,当从
ProcessData
中删除测量值或从
SampleData
中删除
ProcessData
时,您可能应该取消订阅单个事件!谢谢你,丹尼尔。你的回答让我找到了解决问题的办法。太好了!谢谢你,丹尼尔。你的回答使我找到了解决问题的办法。
foreach(var processData in value.ProcessDatas)
{
    foreach(var measurement in processData.Measurements)
    {
        measurement.PropertyChanged += OnMeasurementPropertyChanged;
    }
}