正在更新ObservableCollection对象的值更改

本文关键字:对象 更新 ObservableCollection | 更新日期: 2023-09-27 17:58:38

我有一个包含名称和平均值的ObservableCollection

然后我有一个文本块,它使用转换器从以上的集合中获得这些平均值的平均值

我们的想法是有这样的东西:

Name1  2.15 %
Name2  1.24 %
Name3  3.25 %

       2.21 %

名称和平均值的列表在列表框中,来自集合,下面平均值的平均值在通过转换器绑定到同一集合的文本块上,该转换器对值进行平均。

所有这些都正常工作。现在,列表框中的平均值在一个文本框中,可以编辑,但在编辑它们时,平均值的平均值不会更新,因为只有对象中的属性发送属性更改通知,而不是集合本身。

当任何一行的平均值发生变化时,有没有办法告诉下面的值更新自己?

正在更新ObservableCollection对象的值更改

我建议更改您的设计。

在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");
            }
        }
    }