我正在使用自定义TextBox,它需要Double值,我已经应用了一些验证,它工作正常,但当我按BackSpace时,它也删除了恼人的小数点。例如,如果当前值是" 2.5"我按退格键" .5"被删除,而期望值应该是" 2."
以下是我在UserControl中使用的自定义TextBox的xaml
<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;
}
我找不到任何关于我的问题的解决方案。
答案 0 :(得分:0)
UpdateSourceTrigger
,这意味着每次对值进行更改时,它都会进行验证。 Binding StartConcentration
会更好。