我正在尝试在标签中显示两列或更多列中的值之和(组合的总和),虽然我可以在加载数据时获得值,但总和缺少要更新的功能应用程序运行时,单元格中的值会更改。
如何实现此功能?我认为添加一个按钮来汇总和使用路由命令会更容易。我更喜欢无按钮的方式,因为总和是相当于应用程序的点,我不希望用户在值改变时按下按钮来更新总和。
答案 0 :(得分:1)
您需要在其中一个值发生更改时为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界面
此外,如果您绑定到TextBox
,则UpdateSourceTrigger
的默认值为LostFocus
,因此在TextBox丢失之前,您的setter和PropertyChange通知才会运行焦点。如果要在用户输入数字时重新评估,UpdateSourceTrigger
可以将绑定的OnPropertyChange
更改为{{1}}。
答案 1 :(得分:0)
你使用什么控制?
例如,Datagrid具有可在用户完成此单元后编辑单元格时可以使用的事件,您可以执行值的恢复并更新标签,