2010-01-18 8 views
1

저는 잠시 동안 WPF 및 MVVM 패턴을 사용해 왔습니다. 유효성 검사를 "정상적인"방식으로 수행하는 데 어려움을 겪고 있습니다.WPF의 양식 유효성 검사

1) ViewModel에 IDataErrorInfo 인터페이스를 구현하고 있습니다. 여기서 문제는 LostFocus 및하여 PropertyChanged 트리거가 사용 여부, 텍스트 상자가 컨트롤에 사용자가 어느 탭하기 전에 검증이다

<TextBox Grid.Column="1" 
     Grid.Row="1" 
     Text="{Binding Path=ProjectKey, ValidatesOnDataErrors=True, UpdateSourceTrigger=LostFocus}" /> 

다음 XAML은 같이 보입니다. 즉, 빈 필드의 유효성을 검사하는 경우 양식을 처음 열 때 사용자가 전체적으로 많은 양의 빨간색을 보게됩니다. 이상적으로 입력은 첫 번째 "포커스 손실"또는 "속성 변경"이후 또는 "제출"버튼을 클릭 한 후에 만 ​​유효성이 검사됩니다.

2) 다른 문제는 사용자가 "제출"을 클릭 할 때 최종 확인입니다. 중복과 같이 데이터베이스에 제출하기 전에 유효성을 검증하려는 것이 있습니다. UpdateSourceTrigger = Explicit를 사용하고 모든 컨트롤에서 UpdateSource 메서드를 호출 할 수 있다는 것을 알고 있습니다. MVVM 패턴 내에서이를 수행 할 적절한 방법이 있는지 궁금합니다. ViewModel에 표시되는 코드는 매우 다양합니다 ...

어떤 아이디어라도 좋을 것입니다. 내가 번호를 하나의 뷰 모델에 대한 당신의 속성은 생성자

public double Property1 {get; set;} 

    public ViewModel() 
{ 
    Property1 = 0; 
} 

손 전에 값으로 초기화한다 들어 ...

+0

http://stackoverflow.com/questions/2821998/how-can-i-get-wpf-to-not-display-validation-errors-upon-initial-display-of-contro/2829884#2829884 해결할 수 있습니다. 두 문제 모두 – nash

답변

0

을 온라인으로 많이 검색 한하지만 적합한 솔루션을 찾을 수 없습니다 2 번 항목의 경우 모든 필드가 유효성 검사를 통과 할 때까지 제출 단추를 사용할 수 없습니다. 데이터베이스에서 고유 한 필드가있는 경우 특성 변경시이를 유효성 검증하고 전달하지 않으면 오류를 표시하고 오류를 확인하십시오. 단추의 IsEnabled 속성에 바인딩 된 부울 속성을 가질 수 있으며 모든 필드가 유효성 검사를 통과하면이 속성을 true로 설정할 수 있습니다.

+0

Josh Smith의 다음 예제를 따랐습니다. http://joshsmithonwpf.wordpress.com/2008/11/14/using-a-viewmodel-to-provide-meaningful-validation-error-messages/ –