TextBox验证错误

本文关键字:错误 验证 TextBox | 更新日期: 2023-09-27 18:25:28

我使用的是自定义TextBox,它采用Double值,我已经对其进行了一些验证,它运行良好,但当我按BackSpace时,它也会删除小数点,这很烦人。例如,如果当前值为"2.5",我按下退格键".5"将被删除,而所需值应为"2"。

这是我的自定义TextBox的xaml,它在UserControl 中使用

<rmguiutil:RMTextBox Margin="5,5,0,0" Width="40" HorizontalAlignment="Left" OnlyAllow="Double"
    Text="{Binding StartConcentration, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}"
    IsEnabled="{Binding IngredientIngredientTypeRow, Converter={StaticResource GlobalNullObjectToBooleanConverter}, FallbackValue=False}" />

这是我的自定义TextBox的代码,我已经覆盖了它的PreviewTextInput事件

protected override void OnPreviewTextInput( System.Windows.Input.TextCompositionEventArgs e )
{
    base.OnPreviewTextInput( e );
    if( OnlyAllow == RMTextBoxOnlyAllow.Double && ( e.Text.Any( c => !Char.IsDigit( c ) && c != '.' ) || ( e.Text.Count( c => c == '.' ) + Text.Count( c => c == '.' ) ) > 1 ) )
    e.Handled = true;
    else if( OnlyAllow == RMTextBoxOnlyAllow.Integer && e.Text.Any( c => !Char.IsDigit( c ) ) )
    e.Handled = true;
}

关于我的问题,我找不到任何解决办法。

TextBox验证错误

Binding StartConcentrationUpdateSourceTrigger设置为PropertyChanged,这意味着它将在每次更改值时进行验证。CCD_ 4会更好。