2

ObservableCollection名前と平均が含まれています。

次に、コンバーターを使用して上記のコレクションからそれらの平均の平均を取得するテキストブロックがあります

アイデアは次のようなものを持つことです:

Name1  2.15 %
Name2  1.24 %
Name3  3.25 %


       2.21 %

名前と平均のリストはリストボックスにあり、コレクションから取得されます。以下の平均の平均は、値を平均化するコンバーターを介して同じコレクションにバインドされたテキストブロックにあります。

これはすべて正しく機能しています。現在、リストボックスの平均値はテキストボックスにあり、編集できますが、編集しても、コレクション自体ではなく、オブジェクト内のプロパティのみがプロパティ変更通知を送信するため、平均の平均は更新されません。 。

いずれかの行の平均値が変更されたときにそれ自体を更新するように以下の値を指示する方法はありますか?

4

1 に答える 1

2

デザインを変更することをお勧めします。

コレクションの平均を表す ViewModel のプロパティを作成し、テキスト ボックスをその新しいプロパティにバインドします。

例えば...

get メソッドに配置します。

    //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");
            }
        }
    }
于 2013-02-11T18:57:34.340 に答える