显示单元格中任何值更改时更新的几列的总和

时间:2013-04-24 14:03:15

标签: wpf data-binding command label

我正在尝试在标签中显示两列或更多列中的值之和(组合的总和),虽然我可以在加载数据时获得值,但总和缺少要更新的功能应用程序运行时,单元格中的值会更改。

如何实现此功能?我认为添加一个按钮来汇总和使用路由命令会更容易。我更喜欢无按钮的方式,因为总和是相当于应用程序的点,我不希望用户在值改变时按下按钮来更新总和。

2 个答案:

答案 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具有可在用户完成此单元后编辑单元格时可以使用的事件,您可以执行值的恢复并更新标签,