我正在创建一个贷款计算器,并且我有 3 个文本框,我试图让它们相互反映。在我更改其中一个 TextBox 的输入后,我希望通过按下程序上的计算按钮或在 TextBox 失去焦点后,根据输入重新计算另一个 2。
我拥有的三个文本框绑定到在运行程序时设置的某些值以及在运行时更改的能力:
<TextBox Width="55" Height="23" Style="{StaticResource ResourceKey=StandardTextbox}" Text="{Binding StringFormat={}{0:P}, Path=CurrentLoan.PropertyTaxRate, Converter={StaticResource TextBoxToDecimalConverter1}}"/>
<TextBox Width="65" Height="23" Style="{StaticResource ResourceKey=StandardTextbox}" Text="{Binding StringFormat={}{0:C}, Path=CurrentLoan.PropertyTaxMonth, Converter={StaticResource TextBoxToDecimalConverter1}}"/>
<TextBox Width="65" Height="23" Style="{StaticResource ResourceKey=StandardTextbox}" Text="{Binding StringFormat={}{0:C}, Path=CurrentLoan.PropertyTaxYear, Converter={StaticResource TextBoxToDecimalConverter1}}"/>
CurrentLoan.PropertyTaxRate = .012;
CurrentLoan.PropertyTaxMonth = 250;
CurrentLoan.PropertyTaxYear = 3000;
SharedValues.HomeValue = 250000;
对于价值 250,000 美元且税率为 1.2% 的房屋,年付款额为 3000 美元(250,000 * .012),每月付款额为 250 美元(3,000 / 一年 12 个月)。
此外,我已经像这样声明了属性:
public double PropertyTaxRate
{
get { return _propertyTaxRate; }
set { SetValueAndNotify(() => PropertyTaxRate, ref _propertyTaxRate, (value > 1) ? value / 100 : value); }
}
public double PropertyTaxMonth
{
get { return _propertyTaxMonth; }
set { SetValueAndNotify(() => PropertyTaxMonth, ref _propertyTaxMonth, value); }
}
public double PropertyTaxYear
{
get{ return _propertyTaxYear; }
set { SetValueAndNotify(() => PropertyTaxYear, ref _propertyTaxYear, value); }
}
SetValueAndNotify 方法只是将值设置为支持属性,并使用 INotifyPropertyChanged 通知 GUI 该属性已更改。
假设我将 PropertyTaxYear 属性更改为 $6,000,我希望 PropertyTaxMonth 更改为 $500,PropertyTaxRate 更改为 2.4%。任何人都知道如何做到这一点并使属性相互反映?预先感谢您的意见!