正在更新ObservableCollection对象的值更改
本文关键字:对象 更新 ObservableCollection | 更新日期: 2023-09-27 17:58:38
我有一个包含名称和平均值的ObservableCollection
。
然后我有一个文本块,它使用转换器从以上的集合中获得这些平均值的平均值
我们的想法是有这样的东西:
Name1 2.15 %
Name2 1.24 %
Name3 3.25 %
2.21 %
名称和平均值的列表在列表框中,来自集合,下面平均值的平均值在通过转换器绑定到同一集合的文本块上,该转换器对值进行平均。
所有这些都正常工作。现在,列表框中的平均值在一个文本框中,可以编辑,但在编辑它们时,平均值的平均值不会更新,因为只有对象中的属性发送属性更改通知,而不是集合本身。
当任何一行的平均值发生变化时,有没有办法告诉下面的值更新自己?
我建议更改您的设计。
在ViewModel上创建一个表示集合平均值的属性,并将文本框绑定到该新属性。
例如。。。
获取方法中的位置:
//Get my objects and subscribe to their property change event
MyObjects = GetMyObjects();
foreach (var item in MyObjects)
{
item.PropertyChanged += (sender, e) =>
{
if (e.PropertyName == "Value")
{
Average = MyObjects.Average(x.Value);
}
};
}
这是您的新视图模型属性:
//Bind your textbox to this guy
double _Average;
public double Average
{
get { return _Average; }
set
{
if (_Average != value)
{
_Average = value;
OnNotifyPropertyChanged("Average");
}
}
}