2009-05-07 3 views
2

텍스트 블록의 text 속성에 유효성 검사기를 설정했습니다. 올바른 유효성 검사를 위해 textblock의 부모 usercontrol이 필요하지만 유효성 검사기에서 값 개체 (문자열)와 culture (도움이되지 않음) 만 있습니다.TextBlock의 DataValidation에서 UserControl 또는 VisualTree 가져 오기

누군가 내 시각적 또는 응용 프로그램 제어에 대한 액세스 권한이없는 클래스/메서드에서 특정 usercontrols를 가져 오는 방법을 알고 있습니다.

나는 발리를 UserControl을하거나 매개 변수로 된 본체를 줄 수있는,하지만 난 그렇게 할 수있는 방법을 찾아야하지 않은 경우 문제는 해결 될 수

..

+0

편집 : 변환기에서 데이터를 필요로하고 모든 데이터 논리를 유효성 검사기 밖으로 옮기는 문제가 해결되었습니다. – dalind

답변

1

당신은 내장이 검증 속성을 사용하여 검증을 시도 할 수 Binding 등급 : ValidatesOnExceptionsValidatesOnDataErrors.

ValidatesOnExceptions으로 변환 프로세스 중에 예외가 발생하면 바인딩이 유효하지 않습니다. 이 경우 사용자 지정 변환기를 만들고 사용자 정의 컨트롤을 매개 변수로 전달한 다음 바인딩이 유효하지 않은 경우 변환기에 예외를 throw 할 수 있습니다. 소스가 IDataErrorInfo를 구현하고 IDataErrorInfo.Error 속성에 대한 null이 아닌/빈 문자열을 반환하는 경우 ValidatesOnDataErrors

<Binding ValidatesOnExceptions="True"/> 

, 바인딩이 잘못되었습니다. 소스가이 인터페이스를 구현하거나 구현할 수있는 경우 소스 측의 데이터를 유효성 검증 할 수 있습니다.

<Binding ValidatesOnDataErrors="True"/> 
+0

문제는 유효성 검사기에서 데이터를 올바르게 검증하기에 충분하지 않은 데이터 (사용자 정의 컨트롤이 제공하는)가 부족하다는 것입니다. 따라서이 두 가지 유효성 검사는 데이터가 맞는지 아닌지 알아내는 데 도움이되지 않습니다. IDataErrorInfo에서 불행히도 내 데이터의 유효성을 검사하기에 충분하지 않은 textblock 문자열보다 많은 데이터를 가져 오지 않습니다. – dalind

+0

사용자 지정 변환기를 만들고 변환기에 필요한 사용자 정의 컨트롤을 전달할 수 있습니까? 변환기는 바인딩 프로세스에서 인수를받을 수 있습니다. 유효성 검사기는 그렇지 않은 것으로 보입니다. –

+0

이상적으로 필자는 독자적으로 유효성 검사를 수행하는 데 필요한 속성과 서비스가 포함 된 모델 (ViewModel)의 래퍼를 만드는 것이 좋습니다. 그런 다음 IDataErrorInfo를 통해 바인딩의 유효성을 검사합니다. –

관련 문제