2010-03-16 6 views
3

두 가지 기능을 구현해야하며 입력 및 오류 관리 방법에 대해 어떤 유형의 유효성 검사가 필요한지 궁금합니다.WPF ValueConverter 오류 처리를위한 최선의 방법은 무엇입니까?

Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert 

End Function 

Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack 

End Function 

나는 매개 변수의 유형의 종류는 내가 기대하고 무엇인지를 검사 할 필요가있다.

그렇지 않은 경우, 아무 것도 반환하지 않고 다른 장소에서 잘못된 행동을 잡아 내야합니까? 아니면 여기서 예외 나 단언을 던져야합니까?

여기에 적용할만한 권장 사항이 있습니까?

답변

5

개인적으로 유형과 값을 확인한 다음 변환합니다. 어떤 이유로 든 변환 할 수 없다면 나는 단지 value을 회신하지 않습니다. 예외를 던지거나 로깅을하지 않습니다. UI에서 예상되는 항목을 보지 못했기 때문에 변환이 실패하면 쉽게 볼 수 있습니다. 변환기에서 로깅 오류는 꽤 비쌀 수 있습니다. 따라서 나는 그것을 피합니다.

데이터 바인딩 (일반적으로)은 조용히 실패합니다. (변환기와 바인딩하면 Silverlight에서 한 번 큰 오류가 발생합니다.) 출력 창에서 오류를 확인할 수 있으며 조건부 중단 점을 간단하게 처리 할 수 ​​있습니다. 모든 문제를 디버깅하는 데 필요한 경우 변환기에서.

+0

나는 당신의 접근 방식을 따라갈 것이라고 생각합니다. – Drake

+0

이것에 대한 조사가 진행되었으며, 가장 좋은 방법 인 것 같습니다. Style DataTrigger를 사용하여 바인딩에 의해 반환 된 유형을 검사하고 원시/변환 된 데이터를 다르게 처리 할 수 ​​있습니다. 자세한 내용은이 내용을 자세히 설명합니다. – Will

0

왜 나는 변환기에서 예외를 잡아야하는지 알아 내고 싶습니까? 예를 들어 보셨습니까?

제 생각에는 여기에 대한 필요성이 없어야하며 nullable 형식과 같은 것들은 변환기에서 올바르게 처리되어야합니다. 변환기가 호출되기 전에 다른 모든 것들이 처리되어야하기 때문입니다. 즉, 사용자가 숫자 필드에 문자열을 입력하는 경우 변환기가 아닌 유효성 검사를 통해이를 포착해야합니다.

관련 문제