2014-12-11 1 views
0

개체를 만들고 편집하는 사용자 컨트롤이 있습니다. DatePicker에서 일주일의 BlackOutDates를 설정하고 있습니다. DatePicker의 SelectedValue 속성이 바인딩 된 날짜가 블랙 아웃 날짜 인 경우 ArgumentOutOfRangeException을 throw합니다 (여기에 설명 된대로 : http://msdn.microsoft.com/en-us/library/system.windows.controls.datepicker.selecteddate%28VS.95%29.aspx).데이터 바인딩 WPF datepicker 처리 ArgumentOutOfRangeException

데이터 바인딩 중에이 예외가 발생하면 어떻게 처리합니까? 바인딩의 ExceptionValidationRule은 소스 속성을 업데이트 할 때 발생하는 예외 만 처리합니다. 이상적으로 나는 이미 설정된 모든 값을 표시하고 싶지만 유효성 검사에 실패했습니다. 마치 문자 "a"만 허용한다는 유효성 검사 규칙이있는 텍스트 상자가있는 것처럼 말입니다. 속성 세트를 문자열 "zzzzz"에 바인딩하면 응용 프로그램이 폭파되지 않고 값을 표시 할 수 없으므로 유효성 검사가 실패합니다.

답변

0

그것에 대해 생각한 후에, 나는 실수로 정전 일과 검증의 개념을 혼동하고 있다고 생각합니다. datepicker의 블랙 아웃 날짜는 검증 기능이 아니라 유효성 확인 메커니즘입니다. 그래서 제가 한 것은 컨트롤이로드 될 때입니다. 내 바인딩 된 객체의 날짜가 블랙 아웃 날짜에 발생하면, 블랙 아웃하지 않습니다. 검게 칠한 날짜를 선택할 수 없으므로 이것이 유일한 옵션입니다. 선택한 날짜가 변경된 이벤트 핸들러에서 블랙 아웃 날짜를 재평가하고 선택한 날짜가 더 이상 발생하지 않으면 블랙 아웃 날짜를 검게 표시합니다. 따라서 유효한 날짜를 선택하면 그 날짜를 검게 칠한 날짜로 다시 변경할 수 없습니다. 그런 다음 선택한 유효 날짜가 유효하지 않은 날짜에 컨트롤이 저장되지 않도록 추가 유효성 검사 규칙을 추가했습니다.