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

How to do calculations on various textboxes and show them in textbox on lost focus

我正在尝试让我的小程序进行一些计算。

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

我不想使用按钮进行计算,我希望每次将一个值添加到其中一个文本框时都执行此操作(如此 LostFocus)。

有干净的方法吗?

为此,您需要利用 set 作为一种 方法 ,这意味着您可以为其他属性提高 PropertyChanged 而不仅仅是你在其中之一。

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

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

现在,在绑定成员的 setter 中,您还需要为 derived 值增加 PropertyChanged,例如:

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

而导出值属性只是returns计算的结果:

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

现在您可以将禁用的文本框绑定到它,它会在其他文本框绑定时更新:

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