如何从 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");} }
您需要监听 Details
的 CollectionChanged
以及列表中详细信息的任何 PropertyChanged
事件。
CollectionChanged
事件将告诉您何时在列表中添加、删除、移动或替换对象。但是 ObservableCollection
不会监听其内容上的 PropertyChanged
事件,所以你需要自己做。
请参阅 this 答案作为参考如何做到这一点
我在一些自定义实体中有主从关系。假设我有以下结构:
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");} }
您需要监听 Details
的 CollectionChanged
以及列表中详细信息的任何 PropertyChanged
事件。
CollectionChanged
事件将告诉您何时在列表中添加、删除、移动或替换对象。但是 ObservableCollection
不会监听其内容上的 PropertyChanged
事件,所以你需要自己做。
请参阅 this 答案作为参考如何做到这一点