将文本框绑定到浮点值。无法输入点/逗号

时间:2013-01-30 09:44:58

标签: c# .net wpf

当我尝试在文本框中输入DOT或COMMA时,例如1.0283,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>

我现在没有自定义验证。

也尝试过小数但它也不起作用。对于字符串,一切正常。

3 个答案:

答案 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