2017-11-14 20 views
0

가능한 한 DI 및 IoC를 포함한 MVVM 패턴을 고수하려고하는 WPF 응용 프로그램을 개발 중입니다. 시각적 계층 이하 함유하는 경우 어떤 애플리케이션은 "제 뷰 모델"로 구성된다 :중첩 뷰 모델의 IOC 컨테이너

각 뷰는 VM에 의해 참조
MainView 
|-Login View 
|-Content View 
    |-Content A 
    |-Content B 
    |-Content x 

; "MainViewModel"및 "ContentViewModel"은 자식 VM을 참조하는 속성을 노출하여 내부 요소의 탐색을 제어합니다. "콘텐츠 A", "콘텐츠 B"및 이와 유사한 항목은 DI를 통해 관리하고 싶은 다양한 서비스에 대한 의존성이 있습니다.

UnityContainer를 사용하고 "OnStartup"의 모든 종속성을 등록하지만 여기에 내 질문이 있습니다. ServiceLocator를 사용하고 싶지 않으므로 어떻게 "하위보기 모델"을 컨테이너에 인식시킬 수 있습니까? ? 나는 뭔가 잘못된 이론을하고 있다고 확신한다. 그러나 나는 어떤 참고 문헌도 온라인에서 찾지 못했다. 온라인에서 찾은 각 튜토리얼/예제는 컨테이너의 종속성을 등록한 다음 모델을 즉시 해결합니다.

부모 뷰 모델은 컨테이너에 액세스 할 수있는 어떤 아이 뷰 모델을 만들기위한 책임이 있기 때문에
+0

어떻게 하위보기 모델을 만드시겠습니까? – mm8

+0

@ mm8 부모 VM이 그들을 인스턴스화하고 개체를 "CurrentSubVM"속성에 할당하여 바인딩 된보기 스왑을 실현하십시오 – Socket2104

+0

부모가 컨테이너에 대한 액세스 권한을 갖고 있습니까? 그런 다음 어린이들에게 용기를 주입 할 수 있습니다. – mm8

답변

1

, 당신은 단순히 상위 뷰 모델을 인스턴스화 할 때 컨테이너에 대한 참조와 함께 아이 뷰 모델을 주입 할 수 :

이것은 생성자 종속성 주입의 일반적인 예입니다.

+0

굉장합니다, 나는 그 정보를 놓치고있었습니다, 감사합니다! – Socket2104