2 つ以上の列の値の合計 (合計) をラベルに表示しようとしています。データが読み込まれたときに値を取得できますが、値がアプリケーションの実行中にセル内で変更されました。
この機能を実装するにはどうすればよいですか? 合計するボタンを追加して、ルーティングされたコマンドを使用する方が簡単だと思います。総計はむしろアプリケーションのポイントであり、値が変更されたときに合計を更新するためにユーザーがボタンを押し続けたくないので、ボタンのない方法を好みます。
2 つ以上の列の値の合計 (合計) をラベルに表示しようとしています。データが読み込まれたときに値を取得できますが、値がアプリケーションの実行中にセル内で変更されました。
この機能を実装するにはどうすればよいですか? 合計するボタンを追加して、ルーティングされたコマンドを使用する方が簡単だと思います。総計はむしろアプリケーションのポイントであり、値が変更されたときに合計を更新するためにユーザーがボタンを押し続けたくないので、ボタンのない方法を好みます。
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
場合、 のデフォルト値UpdateSourceTrigger
はLostFocus
であるため、セッターと PropertyChange 通知は TextBox がフォーカスを失うまで実行されません。ユーザーが番号を入力するときにバインディングを再評価する場合UpdateSourceTrigger
は、バインディングの を に変更できます。OnPropertyChange