2010-01-06 1 views
1

여기 상황입니다 : WPF 창에 바인딩 된 데이터 집합이 있습니다. 데이터 집합은 IDataErrorInfo를 구현하므로 창에서 값이 변경되면 변경된 특정 속성에 대해 유효성 검사가 수행됩니다. 유효성 검사 중에 유효성을 검사해야하는 창에 다른 컨트롤이 있음을 발견 할 수 있습니다. 데이터 집합에서 유효성 검사가 필요한 필드 이름 만 알고 있으며이 필드에 바인딩하는 실제 컨트롤이 아닙니다. 내 질문은 : 1. 데이터 세트의 특정 필드에 어떤 컨트롤이 바인딩되는지 어떻게 알 수 있습니까? 2. 코드를 통해 해당 컨트롤에 대한 유효성 검사를 어떻게 트리거합니까?WPF에서 수동으로 컨트롤 유효성 확인

감사합니다.

+0

하나의 속성을 변경하고 유효성을 검사하는 동안 지금까지는 괜찮은 다른 속성이 이제 유효하지 않으며 다시 유효성을 검사해야합니까? –

+0

예. 첫 번째 속성의 변경으로 인해 다른 속성이 무효화되었습니다. 예를 들어, 한 속성은 자동차 유형을 보유하고 다른 속성은 자동차의 가스 유형을 저장합니다. 디젤에서 가솔린 자동차로 변경하면 가스 유형이 무효화됩니다 (물론 이것은 이벤트를 사용하여 쉽게 해결할 수 있지만 매우 간단한 예입니다) – ML123

답변

3

두 가지 옵션을 내가 보는 바와 같이 : (지금 참으로 유효하지 않은 경우)

  1. 내가이 처리하는 하나 개의 방법이 바뀌 속성에 대한 세터에 생각을 더 이상 유효하지의 속성을 취소합니다 .
  2. 또 다른 트릭은 두 번째 속성에서 PropertyChanged 이벤트를 발생시켜보기에서 강제로 다시 평가하도록하는 첫 번째 속성의 설정자에있을 수 있습니다. 당신이 첫번째 속성을 다른 속성을 무효화 할 수있는 기회를했다 변화을 알고 이후

나는, 1 옵션을 선호 할 것입니다.

+0

2dn ​​옵션을 더 좋아하지만 어떻게하면 PropertyChanged 이벤트를 발생시킬 수 있습니까? 데이터 집합의 필드 이름 만 알고 있습니까? 이 필드에 어느 속성이 바인딩되어 있는지 알아야합니다. – ML123

+0

'GasType' 속성의 설정자에서'OnPropertyChanged ("CarType")'을 발생시킵니다. –

+0

여기에 뭔가가 누락되었을 수 있습니다. AFAIK, OnPropertyChanged는 WPF 메서드입니다. 데이터 모델은 DataSet입니다. 어떻게 데이터 집합에서 OnPropertyChanged를 호출 할 수 있습니까? – ML123