如何订阅从子对象引发的属性更改事件?

时间:2012-09-06 04:18:16

标签: winforms linq entity-framework-4 propertychanged

我有一个Invoice对象,它公开了一个只读属性 - Total。此总额只是发票项目总和的总和:

public decimal Total { get { return this.InvoiceItems.Sum(s => s.Total); } }

InvoiceItems类中的Total属性如下所示:

public decimal Total { get { return Price * Quantity - Discount; } }

类和属性是由LINQ生成的(除了我自己创建的两个类中的Total属性)。例如,当InvoiceItem上的价格发生变化时,我希望更改会反映在其父Total的{​​{1}}属性中。

1 个答案:

答案 0 :(得分:0)

您必须手动执行此操作,即

  1. 迭代孩子InvoiceItems
  2. PropertyChanged事件
  3. 中添加处理程序
  4. 当他们的Price媒体资源发生变化时,请更新您的Total媒体资源
  5. 可选处理CollectionChanged上的InvoiceItems事件,以便在添加/删除发票项目时添加/删除PropertyChanged订阅。