0

2 つ以上の列の値の合計 (合計) をラベルに表示しようとしています。データが読み込まれたときに値を取得できますが、値がアプリケーションの実行中にセル内で変更されました。

この機能を実装するにはどうすればよいですか? 合計するボタンを追加して、ルーティングされたコマンドを使用する方が簡単だと思います。総計はむしろアプリケーションのポイントであり、値が変更されたときに合計を更新するためにユーザーがボタンを押し続けたくないので、ボタンのない方法を好みます。

4

2 に答える 2

1

PropertyChange値の 1 つが変更されるたびにプロパティの通知を発生させる必要があるSumため、Sum のバインディングは再評価が必要であることを認識します。

例えば、

public int Value1
{
    get { return _value1; }
    set
    {
        if (_value1 != value)
        {
            _value1 = value;
            RaisePropertyChanged("Value1");
            RaisePropertyChanged("Sum");
        }
    }    
}

また

SomeDataObject.PropertyChanged += SomeDataObject_PropertyChanged;

void SomeDataObject_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    if (e.PropertyName == "Value1" || e.PropertyName == "Value2")
    {
        RaisePropertyChanged("Sum");
    }
}

プロパティ変更通知を発生させるには、 INotifyPropertyChangedインターフェイスを実装する必要があります

また、 にバインドしているTextBox場合、 のデフォルト値UpdateSourceTriggerLostFocusであるため、セッターと PropertyChange 通知は TextBox がフォーカスを失うまで実行されません。ユーザーが番号を入力するときにバインディングを再評価する場合UpdateSourceTriggerは、バインディングの を に変更できます。OnPropertyChange

于 2013-04-24T15:18:34.873 に答える