1

Caliburn.Micro를 사용하여 MVVM 패턴을 구현하는 상당히 복잡한 WPF 응용 프로그램에 대한 코드를 상속 받았습니다. Caliburn 명명 규칙을 사용하여 모델을보기 위해 자동으로 바인딩 된 뷰를 사용합니다. 뷰 모델은 INotifyDataErrorInfo를 구현하는 클래스에서 상속받으며 Fluent Validation은 필드 별 오류를 생성하는 데 사용됩니다. 이 기능은 완벽하게 작동합니다. 단, 사용자 정의 컨트롤이 여러 가지 다른보기에 포함되어 있고 해당 사용자 정의 컨트롤 내의 UI 요소의 유효성을 검사해야하는 경우는 예외입니다.WPF에 포함 된 UserControl과 함께 INotifyDataErrorInfo 사용 (Caliburn.Micro 사용)

포함 된 사용자 정의 컨트롤에는 INotifyDataErrorInfo를 구현하지 않는 자체 뷰 모델이 있습니다. 상위 뷰의 유효성을 검사 할 때 생성되는 유효성 검사 메시지가 표시 할 UI까지 전파되지 않는다고 말하기가 쉽습니다.

나는 질문은 정말 더 개념 그래서 내가 문제를 설명하기 위해 여기에 표시해야 될지 코드를 아주 확실하지 않다 - 질문은 :

임 내 시나리오, 내가보기에 구현해야

모델, 또는 내장 된 사용자 정의 컨트롤 내에 중첩 된 컨트롤의 속성 이름을 가진 뷰 모델에서 부모 뷰 호출 GetErrors()를 호출하는 다른 방법이 있습니까?

나는 그것이 의미가 있기를 바랍니다 - 저는 WPF에 새로 왔습니다!

답변

1

나는 이것을 해결했다. 문제는 내가 중첩 된 뷰에 바인딩 된 별도의 뷰 모델을 가지고 있으며 뷰 모델이 INotifyDataErrorInfo를 구현 한 클래스에서 상속받지 못하는 것으로 밝혀졌습니다. 여기에있는 규칙은 자신의 뷰 모델 (datacontext)을 가진 사용자 컨트롤을 임베드하고 유효성 검사 동작을 얻을 수있는 것으로 보이지만 계층 구조의 모든 뷰 모델은 INotifyDataErrorInfo를 구현해야합니다. 그렇지 않으면 UI 요소가 ' 오류를 알리지 않습니다. 제 경우에는 Caliburn.Micro와 AutoFac이 디버그 컨텍스트에서보기 힘든 많은 수의 자동 배선 작업을 수행했기 때문에 문제를보기가 어려웠습니다.