프리즘과 유니티를 사용하는 WPF 파일럿 프로젝트에서 작업 중이며 내 앱에는 3 개의 모듈이 있습니다.요청 방법 Prism 4에서 Unity IoC를 사용하여 뷰 간 이동
모듈 A는 2 개의보기를 가지고 있으며, 모듈 B는 1 개의보기를 가지고 있으며, 모듈 C는 1 개의보기 (본질적으로 메인 메뉴 임)를 가지고 있으며, 나는 나의 셸을 가지고있다. 쉘은 3 개의 region, ribbonRegion, leftRegion, rightRegion을가집니다.
지금 모듈 C의보기는 다른 모듈을 실행할 수있는 옵션 인 leftRegion 셸로로드됩니다. 작업을 선택하면 (현재 유일한 옵션입니다) 모듈 A 뷰 1은 왼쪽 영역에서 탐색되어 (주 메뉴 뷰 대체) 모듈 B 뷰 1이 rightRegion에서도 탐색됩니다.
모듈 A 뷰 1에는 leftRegion의 모듈 A 뷰 2도 탐색 할 수있는 버튼이 있으며 뒤로 이동할 수 있습니다.
LifetimeManagers를 이해하지 못했을 때이 모든 것이 훌륭하게 작동했습니다. 항상 A의 view1과 view2 사이를 오가며 B의 view1을 표시하면서 내 메뉴가 작동했습니다. 그러나 나는 나중에 A로 이동했을 때마다 A의 view1과 view2의 새로운 인스턴스가 해결되고 있음을 깨달았습니다. 이것은 새로운 ViewModel이 생성 될 때마다 새로운 뷰가 생성 될 때 문제가되었지만 LifetimeManagers에 대해 배우기 시작하여 과도 상태에서 제어 상태로 변경되었습니다. 그러나 그 다음 나의 탐색은 부서졌다.
ModuleA 정의 : 메인 메뉴에서
container.RegisterType<Object, View1>(ViewNames.View1, new ContainerControlledLifetimeManager());
container.RegisterType<Object, View2>(ViewNames.View2, new ContainerControlledLifetimeManager());
탐색 (B와 C에 대한 동일한 접근) :
regionManager.RequestNavigate(RegionNames.RightRegion, ViewNames.TifView);
regionManager.RequestNavigate(RegionNames.LeftRegion, ViewNames.View1);
당신이,이 두 모듈의 전망이 기대하는 이러한 기능을 모두 확인 및 탐색 한 다음 View1이 주 메뉴보기를 대체합니다. 이제 Navigation은 View1의 명령에서 View2로 이동하려고 할 때 중단됩니다.
regionManager.RequestNavigate(RegionNames.LeftRegion, ViewNames.View2);
그러나이 RequestNavigate는 작동하지 않습니다. 보기가 해석되지 않고 영역에 추가되어 탐색이 발생하지 않습니다. (명령이 올바르게 작동하고 작동하지 않습니다.)
View2가 아닌 경우 모듈 A의 View1이 해결되어 영역에 추가 된 이유는 무엇입니까? 두보기 모두 동일한 방식으로 등록되고 탐색됩니다. 실제로 주문을 변경하고 먼저 View2로 이동하여 View1 초로 시도하면 View2가 해결되지만 View1이 손상됩니다. 내가 알지 못하는 ContainerControlledLifetimeManager에 몇 가지 제한 사항이 있습니까?
이 탐색을 처리하는 방법에 대한 도움이 도움이 될 것입니다. 실제로이 소스를 찾을 위치가 어떨지, LifetimeManager 변경으로 인해 발생하는 문제입니까? 아니면 잘못 등록하거나 탐색하고 있습니까?