【发布时间】:2014-12-17 04:28:55
【问题描述】:
我有一个绑定到名为 Amount 的小数属性的文本框,以及一条规定 Amount 值不能大于 100 的业务规则。 这是使用适当的 MVVM 和 INotifyPropertyChanged 事件设置的。
<TextBox Text="{Binding Amount, Mode=TwoWay, StringFormat=N2}" />
当金额值发生变化时,在属性集中,我正在检查金额是否 > 100。如果是,那么我将值设置为 100。
private decimal _Amount;
public decimal Amount
{
get { return _Amount; }
set {
if (value > 100)
_Amount = 100
else
_Amount = value;
NotifyPropertyChanged("Amount");
}
}
问题是这个新值永远不会出现在文本框中,无论我抛出多少次 INotifyPropertyChangedEvent。
我尝试在 TexBbox 的 LostFocus 事件上抛出 INotifyPropertyChanged 事件,但这会使值重置为原始(未编辑)值。那是因为这个事件发生在值到达属性设置器之前。
谁能建议我让修改后的值正确显示的方法?
【问题讨论】:
标签: silverlight binding textbox inotifypropertychanged