如何对各种文本框进行计算,并在丢失焦点的文本框中显示它们

时间:2015-03-05 20:55:10

标签: c# wpf binding

我想让我的小程序做一些计算。

到目前为止,我有15个文本框,名为TxtPP(后跟产品类型),所以我得到了TxtPPproduct1,TxtPPproduct2等.... 在表单的底部,我有一个禁用的文本框,显示所有上述文本框的总和。

我不想使用按钮进行计算,我希望每次将值添加到其中一个文本框时都这样做(所以LostFocus)。

有干净的方法吗?

1 个答案:

答案 0 :(得分:0)

要执行此操作,您需要利用set作为方法,这意味着您可以为其他属性提升PropertyChanged,而不仅仅是您所在的属性。

首先,您需要绑定每个源文本框。要让它在丢失输入焦点时更新来源,请将UpdateSourceTrigger设置为LostFocus,例如:

<TextBox Text="{Binding FirstSourceValue, UpdateSourceTrigger=LostFocus}"/>

现在,在绑定成员的setter中,您还需要为派生的值引发PropertyChanged,例如:

public double FirstSourceValue
{
    get { return firstSourceValue; }
    set
    {
         firstSourceValue = value;
         NotifyPropertyChanged(); //Notify for this property
         NotifyPropertyChanged("DerivedValue"); //Notify for the other one
    }
}

派生值属性只返回计算结果:

public DerivedValue
{
    get { return FirstSourceValue + SecondSourceValue; }
}

现在您可以将禁用的文本框绑定到它,并且只要其他文本框执行,它就会更新:

<TextBox IsEnabled="False" Text="{Binding DerivedValue, Mode=OneWay}"/>