我正在尝试在标签中显示两列或多列中的值的总和(即组合总和),虽然我可以在加载数据时获得一个值,但总和缺乏在值时更新的功能应用程序运行时在单元格中更改。
如何实现此功能?我认为添加一个按钮来求和并使用路由命令会更容易。我更喜欢无按钮的方式,因为总和是应用程序的重点,我不希望用户在值更改时继续按下按钮来更新总和。
我正在尝试在标签中显示两列或多列中的值的总和(即组合总和),虽然我可以在加载数据时获得一个值,但总和缺乏在值时更新的功能应用程序运行时在单元格中更改。
如何实现此功能?我认为添加一个按钮来求和并使用路由命令会更容易。我更喜欢无按钮的方式,因为总和是应用程序的重点,我不希望用户在值更改时继续按下按钮来更新总和。
每当其中一个值发生更改时,您都需要PropertyChange
为该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接口
此外,如果您绑定到 a TextBox
,则默认值为UpdateSourceTrigger
is LostFocus
,因此您的 setter 和 PropertyChange 通知在 TextBox 失去焦点之前不会运行。如果您想在用户输入他们的号码时重新评估它,您可以UpdateSourceTrigger
将绑定更改为。OnPropertyChange
你用的是什么控件?
Datagrid fo 示例具有事件,当用户在此事件之后完成编辑单元格时可以使用这些事件,您可以对值进行恢复并更新标签,