나는 유효성 검사 규칙이있는 간단한 텍스트 상자가 있지만 특별한 상황에서는 매우 이상한 동작이 있습니다.WPF 4.5 비어있는 시작시 TextBox 유효성 검사
내 코드를이 코드로 사용하고 내 속성이 0 (db에서 오는 것임) 인 경우 예상대로 작동합니다. TextBox는 시작할 때 빨간색 테두리를 가져옵니다.
<TextBox x:Name="TxtOfferNumber" IsReadOnly="{Binding SelectedOffer.IsValid}" GotKeyboardFocus="TxtOfferNumber_GotKeyboardFocus" GotMouseCapture="TxtOfferNumber_GotMouseCapture"> <TextBox.Text> <Binding Path="OfferNumberLookup" UpdateSourceTrigger="PropertyChanged"> <Binding.ValidationRules> <validators:OfferNumberValidator ValidatesOnTargetUpdated="True"/> </Binding.ValidationRules> </Binding> </TextBox.Text> </TextBox>
내 유효성 검사 규칙 :
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) { return string.IsNullOrWhiteSpace(value as string) || Convert.ToInt32(value) != 0 ? ValidationResult.ValidResult : new ValidationResult(false, "Le numéro d'offre doit être informé!"); }
문제는 그렇게 빈 유효하지 않습니다, 나는 필요에 따라이 필드를 원하는 것입니다.
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) { return !string.IsNullOrWhiteSpace(value as string) && Convert.ToInt32(value) != 0 ? ValidationResult.ValidResult : new ValidationResult(false, "Le numéro d'offre doit être informé!"); }
을 그리고 내 큰 두통이있다 :
나는 나의 유효성 검사 규칙이 원하는대로. 유효성 검사 함수는 올바른 결과를 반환하지만 빨간색 테두리는 반환하지 않습니다. 올바른 값을 입력하고 잘못된 값 (공백 또는 0)으로 변경하면 이제 빨간색 테두리가 생깁니다.
빈 문자열을 확인하려면 string.IsNullorEmpty도 사용할 수 있습니다. –