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;
}
关于我的问题,我找不到任何解决办法。
Binding StartConcentration
的UpdateSourceTrigger
设置为PropertyChanged
,这意味着它将在每次更改值时进行验证。CCD_ 4会更好。