2010-01-29 2 views
4

저는 프리즘에 응용 프로그램을 쓰고 있습니다. 사용자 정의 컨트롤이 있고 두 개의 <ContentControl> 컨트롤이 있습니다. 이것들은 둘 다 그들에게 배정 된 지역을 가지고 있습니다. 사용자 컨트롤이 ShowDialog()을 사용하여 표시되는 Window에서 호스팅되고 있습니다.
저는 뷰 검색을 사용하여 영역에 내 뷰 중 하나를 추가하고 다른 뷰는 영역에 뷰를 주입하려고합니다. 보기 검색이 정상적으로 작동합니다. 내가보기를 주입하려고 다른 지역을 참조 할 때 나는 예외를 얻을 :RegionManager에서 지역을 찾을 수 없습니다 (PRISM 사용)

KeyNotFoundException
지역 관리자는 MyRegion 지역을 포함하지 않습니다.

RegionManagers 영역을 볼 때보기를 삽입하려고 시도하는 영역이나 존재하지 않는 영역이 표시 검색을 사용하고 있습니다.

내가 쉘과 다른 창에서 중요한 점은 무엇입니까? 하나의 RegionManager 만 있다고 생각했지만 아직 내 뷰 검색이 작동하려면 두 개가 있어야합니다 ...? 아니면 나중에 응용 프로그램 수명주기에서 두 개의 새로운 영역이 만들어지기 때문입니까? 아니면 새로운 지역이 내 MainRegion 안에 있지 않기 때문입니까?

편집 :
지역이 생성되지만이 추가되지 않도록는 RegionManager의 인스턴스를 찾을 수없는 것 같습니다 파고 일부를 수행 한 후. 모든 단서?

답변

7

지금 분류되었습니다. 내 발표자 클래스의 생성자에 지역 관리자를 등록해야했습니다.
그런 식으로 새 창에있는 지역이 내 글로벌 지역 관리자를 찾을 수 있습니다.

RegionManager.SetRegionManager(view as DependencyObject, regionManager);

+3

또한보기 대신 창에서 RegionManager를 설정할 수도 있습니다. 내 대답보기 : http://stackoverflow.com/questions/1014948/wpf-prism-v2-region-in-a-modal-dialog-add-region-in-code-behind/1019029#1019029 –

+0

@Cameron I 이제 대화 상자에 두 번째로 UpdateRegionsException을 표시하는 문제가 발생했습니다. 모든 단서? –

+3

창을 닫을 때 RegionManager를 설정 해제해야합니다. –