我确定我错过了一些基本知识,所以请耐心等待。
我有两个对象,SalesOrder和SalesOrderLineItem。 lineitems保存在SalesOrder的Observablecollection<SalesOrderLineItem>
中,如果我添加行项目,我的数据绑定listView知道新项目。
现在我遇到问题的地方是:SalesOrder有一个名为“OrderTotal”的只读属性,它知道所有行项目的总价格是多少。
如果我更改订单项的数量或价格,我似乎不知道如何让更改通知冒泡到“OrderTotal”。
这两个类都继承自,并触发INotifyPropertyChanged
。
答案 0 :(得分:2)
ObservableCollection仅在添加,删除项目或刷新列表时通知,而不是在集合中项目的属性发生更改时通知。
SalesOrder类需要监听每个SalesOrderLineItem的PropertyChanged事件。
-
OrderTotal属性也可以是动态的,每次生成总数......
答案 1 :(得分:0)
如果您喜欢冒险,可以尝试BindableLinq或类似的东西。 它允许您公开侦听更改的查询结果。
但它还没有完成测试版,我不确定它会不会...... ContinuousLinq是另一个,但它根本不支持Silverlight。
除此之外,您必须听取每个孩子的意见,并在收集更改时添加/删除处理程序。
答案 2 :(得分:0)
public ObservableCollection<TestClass> List
{
get { return _List; }
set {
if (_List!= value)
{
_List = value;
raisePropertyChange("List");
List.ToList().ForEach(i=> i.PropertyChanged+= (o,e)=>
{
//PropertyChanged.Raise(() => List);
raisePropertyChange("List");
//or what ever you want
}
);
}
}
}