2014-09-17 28 views
0

나는 유효성 검사 규칙이있는 간단한 텍스트 상자가 있지만 특별한 상황에서는 매우 이상한 동작이 있습니다.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)으로 변경하면 이제 빨간색 테두리가 생깁니다.

+0

빈 문자열을 확인하려면 string.IsNullorEmpty도 사용할 수 있습니다. –

답변

0

TextBox가 입력시 변경 될 때만 TextBox의 유효성이 검사되는 문제가 발생하는 경우 빠르고 정확하지 않은 수정은 텍스트 또는 바인딩 속성을 올바른 것으로 설정 한 다음 잘못된 값을 설정하는 것일 수 있습니다 하중.

+0

글쎄,이 방법을 시도했지만 잘못된 방법으로 시도한 것 같습니다. 다시 시도하고 예상대로 작동합니다. 정말로 더 깨끗하고 정확한 방법을 찾기를 바랬습니다. 이것이 WPF의 버그라고 말할 수 있습니까? –

+0

오, 죄송합니다. 공손한 걸 깜박 했어. 고맙습니다. –