我想让我的小程序做一些计算。
到目前为止,我有15个文本框,名为TxtPP(后跟产品类型),所以我得到了TxtPPproduct1,TxtPPproduct2等.... 在表单的底部,我有一个禁用的文本框,显示所有上述文本框的总和。
我不想使用按钮进行计算,我希望每次将值添加到其中一个文本框时都这样做(所以LostFocus
)。
有干净的方法吗?
答案 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}"/>