如何从 Master-Detail 中的详细信息值使用 NotifyPropertyChange master

how to use NotifyPropertyChange master from detail values in Master-Detail

我在一些自定义实体中有主从关系。假设我有以下结构:

    class Master : INotifyPropertyChanged
{
    public int Id { get; set; } // + property changed implementation 
    public string Name { get; set; } // + property changed implementation

    public ObservableCollection<Detail> Details { get; }
    public long sumValue{get{return Details.Sum(x=>x.value -x.discount );}}
}

class Detail : INotifyPropertyChanged
{
     public int Id { get; private set; }
     public string Description { get; set; }
     public double Discont{ get; set; } // + property changed implementation
     public double Value { get; set; } // + property changed implementation
}

如果我更改第 5 行的详细折扣或价值 如何刷新 sumValue?

我添加第 1 行并设置数量 1 并且行总和行为 2000

并添加新行 2 设置数量 5,行总和为 10000

但在最后一行的 master frezz 中总和为 2000!

如果我打电话

    NotifyPropertyChange("sumValue");

来自 master ui 更新的总和值 属性!

我该如何使用

        NotifyPropertyChange("sumValue");

来自大师 属性 详细 属性

像这样:

 public double Discont{ get{ return _discount } set{_discount = value; NotifyPropertyChange("sumValue");} }

您需要监听 DetailsCollectionChanged 以及列表中详细信息的任何 PropertyChanged 事件。 CollectionChanged 事件将告诉您何时在列表中添加、删除、移动或替换对象。但是 ObservableCollection 不会监听其内容上的 PropertyChanged 事件,所以你需要自己做。

请参阅 this 答案作为参考如何做到这一点