저는 주변을 검색 중이므로 IDataErrorInfo
이 현재 입력 유효성 검사에 선호되는 방법 인 것으로 보입니다.값 변환 후의 WPF IDataErrorInfo 유효성 검사
IDataErrorInfo
과 값 변환기를 결합하면 나에게 조금 까다로운 것으로 입증되었습니다.
하나의 질문 나는 스스로를 물었고, 결국 Google에서는 값 변환기에서 잘못된 입력을 처리하는 방법을 알고있었습니다. 일반적인 방법은 입력이 잘못되었을 때 변환되지 않은 값을 반환하는 것입니다. 뷰 모델/모델은 잘못된 입력을 확인하고 무엇이 잘못되었는지 상세하게 설명 할 수 있기 때문에 많은 의미가 있습니다.
그러나이 방법에는 한 가지 문제가 있습니다. 의 다음과 같은 시나리오를 해보자 :
나는 사용자가 가격에 입력하도록되어 유형
decimal
의 속성에 바인딩 텍스트 상자가 있습니다.소수점을 특정 소수점 구분 기호로 변환하고 두 소수로 반올림하는 값 변환기가 있습니다.
사용자는
aa12.4
을 텍스트 상자에 입력합니다.
내 값 변환기를 반환하면 aa12.4
이 텍스트 상자가 바인딩 가격 속성에 연결되어있는 경우 자동으로 0으로 변환됩니다 (이 변환 된 잘못된 값 아니기 때문에). 0 (또는 0.00)은 사실로 유효성을 확인하는 완전한 법적 가격입니다.
당신은 내가 aa12.4
이 유효하고 마술 I 입력에 특별히 문제가 있는지 확인하고 사용자에게 그 뒷면을보고 느슨한 또한 0으로 모든 수단을 변형되고 싶지 않아 이해할 수있다.
이 시나리오를 어떻게 처리합니까? 유효성 검사를 처리하는 메서드는 속성이 설정된 후에 호출됩니다. 내가 읽은 한 가지 아이디어는 변환기에서 DependencyProperty.UnsetValue
을 반환하는 것입니다. 다른 한편으로는 유효성 검사기가 입력에 무엇이 잘못되었는지를 판단하는 데 도움이되지 않습니다. 단지 변환 할 수 없다는 것입니다.