2010-03-26 3 views
2

쉘에 중첩 된 영역이있는 메뉴 (Telerik RadMenu)가 있습니다. 내 모듈에서 모듈 메뉴 또는 도구 모음 항목을이 영역으로 등록합니다. 모든 것이 루트 영역에서 제대로 작동하지만 메뉴의 파일 영역과 같은 자식 영역에 무언가를 추가하려고하면 "예외 메시지는 예외입니다 : 영역 관리자에 FileMenuRegion 영역이 없습니다."라는 오류 메시지가 나타납니다.MVVM 프리즘 중첩 된 영역에서 하위 영역을 찾을 수 없음

그러나 나는이

regionManager.Regions[RegionNames.MainMenuRegion].Add(menuItem); 

모든이 코드

regionManager.Regions[RegionNames.FileMenuRegion].Add(menuItem); 

을 변경하면 잘 작동 말한 것처럼. 아래는 내 메뉴의 XAML이므로 지역 이름과 구성 방법을 볼 수 있습니다. 어떤 도움도 크게 당황스럽고 나를 미치게 만들어 주면 감사하겠습니다.

메뉴

<telerikNavigation:RadMenu x:Name="menuMain" DockPanel.Dock="Top" prismrgn:RegionManager.RegionName="{x:Static i:RegionNames.MainMenuRegion}" telerik:StyleManager.Theme="{Binding Source={StaticResource settings}, Path=Default.CurrentTheme}"> 
      <telerikNavigation:RadMenuItem Header="{x:Static p:Resources.File}" prismrgn:RegionManager.RegionName="{x:Static i:RegionNames.FileMenuRegion}"> 
       <telerikNavigation:RadMenuItem Header="{x:Static p:Resources.Exit}" Command="{Binding ExitCommand}"> 
        <telerikNavigation:RadMenuItem.Icon> 
         <Image Source="../Resources/Close.png" Stretch="None" /> 
        </telerikNavigation:RadMenuItem.Icon> 
       </telerikNavigation:RadMenuItem> 
      </telerikNavigation:RadMenuItem> 
     </telerikNavigation:RadMenu> 

답변

1

위의 XAML은 PRISM 지역의 디자인에 간다.

모든 영역은 ContentControl에서 파생 된 컨트롤에 연결되어 있어야합니다. region 등록 된 뷰를로드하는 프로세스는 region 컨테이너의 컨텐츠를 해당 region 이름에 대해 등록 된 일치하는보기로 대체합니다. 그러면 중첩 된 영역 이름이 제거되어 표시되는 오류가 올바른 것입니다.

지정된 지역 이름으로 등록 된보기 자체가 다른 지역을 포함 할 수 있습니다.

+0

중첩 된 영역을 갖는 방법이 있습니까? 제 정확한 문제를 이해하려면 [this] (http://compositewpf.codeplex.com/discussions/249769#post725985) 주석을보십시오. 참고로, 해당 스레드의 3 번째 게시물입니다. 감사! – Shimmy

+1

지역은 레이아웃 구성 단위입니다. 중첩의 과정은 대체 할 수있는 영역 내의 대체 가능한 영역을 실제로 원한다는 것을 의미합니다. 해결책은 평소와 같이 최상위 레벨 영역에 뷰를 등록하는 것이며, 각 뷰에는 다른 영역 정의가 포함됩니다. 사용자 컨트롤에는 지역이있을 수 있으며, 종종 알려지지 않은 출처에서 제공 한 상태 정보를 간단하게 삽입 할 수 있습니다. –

+0

내 대답을 찾았습니다. [여기] (http://compositewpf.codeplex.com/discussions/249769#post726075)에 게시되었습니다. – Shimmy

관련 문제