사용자 지정 TextBox를 사용하고 있으며 일부 유효성 검사를 적용한 Double 값을 사용하지만 정상적으로 작동하지만 Backspace를 누르면 불쾌감을주는 소수점도 제거됩니다. 예를 들어 현재 값이 "2.5"이고 백 스페이스를 누르면 ".5"는 제거되지만 원하는 값은 "2"여야합니다. 여기 TextBox 유효성 검사 오류
내 사용자 정의 텍스트 상자에 대한 뒤에 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}" />
의 코드이다 사용되는 내 사용자 지정 텍스트 상자의 XAML, 난 그 PreviewTextInput 이벤트 오버라이드 (override) 한
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;
}
내가 할 수있는 내 문제에 관한 해결책을 찾지 못했습니다.
나는 무엇을하고 있는지 나에게 분명하지 않다. 정상 경로는 2 단계 유효성 검사가 될 것입니다 : 1) 사용자가 값을 편집 할 때'double.TryParse()'가 편집 중에'false'를 반환하면 붉은 색으로 표시 할 수 있습니다. 2) 사용자가 자신의 입력을 확인하면 (focus lost?'Enter' pressed?), 다시 double.TryParse()를하고 값이 유효하지 않으면 원래의 값으로 변경하지 마십시오. – Sinatr