如何在集合对象上强制 NotifyPropertyChanged

How to force NotifyPropertyChanged on a collection object

我有一个 class ,其中我通常定义一个 属性 如下:

public class MeasurementPoint : ModelBase
{
    private double _value;
    public double Value
    {
        get { return _value; }
        set
        {
            _value = value;
            NotifyPropertyChanged();
        }
    }
}

接下来我创建了一个包含许多 'MeasurementPoint' 对象的集合。我想在满足特定值逻辑的每个对象上引发 notifyPropertyChanged。

目前此方法有效,并且引发了 属性Changed。但是,肯定有更有效的方法来做到这一点吗?

private void RefreshDataGridTolerance()
{
    foreach (var measurementPoint in DataSet)
    {
        //TODO: Change this into a real way to raiseproperty changed without actually changing the value
        var temp = measurementPoint.Value;
        measurementPoint.Value = temp;

        // something like this doesnt work?
        // RaisePropertyChanged(nameof(measurementPoint.Value));
    }
}

集合定义如下:ObservableCollection<MeasurementPoint> DataSet

您可以在模型 class 中实施 public 方法,该方法将为每个定义的 属性 引发 属性 更改事件。最便宜的方法可能是这样的:

public class MeasurementPoint : ModelBase
{
  //...
  public void RefreshAllProperties()
  {
    foreach(var prop in this.GetType().GetProperties())
      this.OnPropertyChanged(prop.Name);
  }
}

您可以像这样刷新一个数据元素的绑定。

var element = DataSet.First();
element.RefreshAllProperties();