当我尝试在文本框中输入DOT或COMMA时,例如1.02
或83,33
,文本框会阻止我输入这样的值(并且输入变为红色)。文本框绑定到float属性。为什么呢?
我已将文本框绑定到实现Power
的类的float属性INotifyPropertyChanged
。
private float _power;
public float Power
{
get { return _power; }
set
{
_power = value;
OnPropertyChanged("Power");
}
}
在Xaml
<TextBox Name="txtPower" Height="23" TextWrapping="Wrap" Text="{Binding Path=Power, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBox>
我现在没有自定义验证。
也尝试过小数但它也不起作用。对于字符串,一切正常。
答案 0 :(得分:28)
如果您使用的是.NET 4.5或更高版本,则可以强制执行4.5之前的行为
System.Windows.FrameworkCompatibilityPreferences.KeepTextBoxDisplaySynchronizedWithTextProperty = false;
请参阅Sebastian Lux's blog:
使用.NET 4.5,默认情况下不再能够使用UpdateSourceTrigger = PropertyChanged
输入分隔符(逗号或点)。微软说,这是有意的。
答案 1 :(得分:22)
尝试将StringFormat定义添加到绑定中。 像这样:
<TextBox Name="txtPower" Height="23"
TextWrapping="Wrap" Text="{Binding Path=Power, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged,StringFormat=N2}"></TextBox>
答案 2 :(得分:0)
修复文本框绑定到decimal或float
的点和逗号问题pg_xlogdump