2014-09-05 11 views
0

내가 데이터 유효성 검사 텍스트 상자 모두의 무리를 클릭버튼을 ValidationResults을 확인하는 방법은 다음과 같이

XAML

<TextBox> 
    <TextBox.Text> 
     <Binding Path="Name" ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged"> 
      <Binding.ValidationRules> 
       <local:Validation2/> 
      </Binding.ValidationRules> 
     </Binding> 
    </TextBox.Text> 
</TextBox> 

C#을

public class Validation2 : ValidationRule 
{ 
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) 
    { 
     double result; 
     return double.TryParse(value.ToString(), out result) == true ? new ValidationResult(true, null) : new ValidationResult(false, "error"); 
    } 
} 

이, 잘 작동 I 때마다 텍스트 박스에 아무 것도 입력하지 말고 오류가 나타납니다. 이제 "폼"을 보내기위한 버튼이 있습니다. 아무 것도하지 않고 유효성 검사 오류가 있는지 확인하기 위해 버튼을 사용하고 싶습니다. 어떻게 그렇게 할 것인가.

답변

0

원본 속성에 새 값을 적용하기 전에 유효성 검사가 수행됩니다. 귀하의 경우 - 재산을 변경할 때. wpf에는 more 사례도 거의 없지만 OnFormClosing 또는 이와 유사한 사례는 없습니다. 그것은 의도적으로 : 컨트롤 속성은 다른 컨트롤 속성 (또는 같은 속성에 바인딩 된 여러 컨트롤에 바인딩 될 수 있으므로 포커스를 변경하면 늦게 유효성 검사가 수행됩니다.

교차 바인딩이없는 경우 하나의 속성이 하나의 컨트롤에만 바인딩 된 다음 UpdateSourceTrigger.Explicit을 사용할 수 있습니다. 양식을 닫을 때마다 UpdateSource()을 호출 할 수 있습니다.

다른 해결책은 팝업으로으로 오류를 표시하지 않는 것입니다. 오류 상태는 빨간색 테두리 또는 가까운 ! 아이콘 일 수 있습니다.

본인 스스로 확인 메커니즘을 사용하지 않습니다. 대신, 자체 검증 컨트롤이 있습니다. 예를 들어 속성을 가진 TextBoxdouble 값과 GetDouble 속성 값을 자동으로 검증하여 값을 구문 분석합니다. 나는 유효성 검사가 사용자 (빨간색 경계선, 깜박이는 캡션 등)에 대해 일 때 실제 상태를 표시하는 동안 모든 것을 유효하게하는 것을 더 좋아합니다.

+0

저는 단어 형식을 사용하는 geuss는 나쁜 생각이었습니다. 기본적으로 나는 많은 텍스트 상자와 입력 된 모든 데이터의 XML 파일을 만드는 버튼이있는 창이 있습니다. 유효성 검사 오류가있는 경우 단추에 파일을 만들지 말아야합니다. – user3692104

0

Clientside and Serverside (자바 스크립트를 사용하지 않는 복용량의 경우) 할 수 있습니다. Clientside 당신은 당신의 Projectoptions에서 지정할 수 있습니다. 그것의 유효성 검사라고 생각합니다. Serverside의 을 사용하면 다른 코드를 실행하기 전에 모델 상태를 확인할 수 있습니다.

+0

태그를 망 쳤습니까? 이것은 자바와 아무런 관련이 없습니다. P – user3692104