2014-04-08 2 views
0

내 응용 프로그램 기본보기를 나타내는 단일보기 모델이 있습니다. 이 뷰 모델에는 내 뷰의 눈금이 바인딩되는 ObservableCollection 모델 개체가 포함되어 있습니다. 컬렉션의 각 항목은 표준 WPF 유효성 확인 메커니즘을 용이하게하는 IDataErrorInfo를 구현합니다. 즉 모델의 오류로 인해 뷰 컨트롤이 빨간색 (이 경우 셀)을 강조 표시합니다.WPF - 뷰 모델의 오류 수는 어떻게 확인합니까?

내 문제는 페이지의 오류 수에 액세스해야하는 viewmodel에서 로직을 수행하고 싶습니다 (오히려 오류가 있거나없는 경우). viewmodel 내에서이 방법에 액세스하는 방법을 볼 수 없으며 모든 WPF 유효성 검사가 뷰에 포함 된 것처럼 보입니다. 그렇습니까?

답변

2

나는 이것을 달성하기 위해 "내장 된"것이 없다고 생각합니다. 한 가지 옵션은 IsValid과 같이 OC의 각 모델에 속성을 표시하는 것입니다.이 속성은 모델의 IDataErrorInfo 인덱스 속성에서 설정합니다. 그런 다음 VM은 Linq 비트를 사용하여 IsValid = false 인 OC에서 모델을 확인할 수 있습니다.

VM에 일종의 "PageHasErrors"속성을 노출시키려는 경우 모델이 INPC를 구현한다고 가정하고 VM이 각 모델의 PropertyChange 이벤트 (특히 IsValid 속성)에 가입해야 할 수 있습니다. VM의 이벤트 핸들러 내에서 모델 중 하나가 IsValid = false인지 여부에 따라 "PageHasErrors"속성을 업데이트합니다.

+0

"모델의 IDataErrorInfo 인덱싱 된 속성에서 설정하면"어떻게해야합니까? 각 속성은 차례로 평가됩니다. 맞습니까? 전체 개체에 대해 'IsValid' 속성을 설정하는 방법을 잘 모릅니다. – SeeNoWeevil

+0

이 기사에서 제안한 몇 가지 창의적인 솔루션이 있습니다. http://stackoverflow.com/questions/13603243/idataerrorinfo-how-to-know-if-all-properties-are-valid –

관련 문제