2011-04-30 8 views
2

MEF/Prism 및 Silverlight를 처음 사용하고 모듈을 ItemsControl에 동적으로로드하는 방법을 잘 모르겠습니다. 기본적으로 동적으로로드 된 모듈을 같은 region 컨테이너로 스왑 할 수 있기를 원합니다. MEF/PRISM을 사용하여 어떻게해야합니까?MEF/PRISM Silverlight

+2

모듈이 "지역"에로드되지 않았습니다! 영역은 "보기"(discouvered 또는 "injected") 일 수 있습니다. 질문을 다시 정리하고 세부 사항을 추가해 주시겠습니까? :) (덧붙여서 PRISM 문서는 QuickStarts 및 Reference Implementation과 함께 시작하는 것이 좋습니다;) – AbdouMoumen

답변

2

유형 ItemsControl이어야합니다 몇 가지 컨트롤을 호스팅하기위한 지역 :

<ItemsControl 
    x:Name="MainToolbar" 
    cal:RegionManager.RegionName="{x:Static inf:RegionNames.MainToolBarRegion}"> 
</ItemsControl> 

뷰를 추가하고 코드를 제거 할 수 있습니다 : 당신은 또한 코드 뷰를 추가 할 수 있습니다이 코드를 사용하여

//add view if not already present 
IRegion region = this._regionManager.Regions["RegionName"]; 

object view = region.GetView("ViewName"); 
if (view == null) 
{ 
    var view = _container.ResolveSessionRelatedView<IMyView>(); 
    region.Add(view, "ViewName"); 
} 

//remove 
IRegion region = this._regionManager.Regions["RegionName"]; 

object view = region.GetView("ViewName"); 
if (view != null) 
{ 
    region.Remove(view); 
} 

프리즘 (Prism) 내장 네비게이션 기능을 사용합니다.

3

프리즘의 QuickStart 프로젝트는 사용자가 요청한 것 이상으로 효과적입니다. Using Prism for navigation in Wpf application

보기 사출 퀵 스타트가 너무 너무 도움이 될 수있는 ListView 선택한 항목의 변화에 ​​대한보기를 설정 않습니다 그것은이 스레드에서 봐 가지고, 또한 :

Modularity QuickStart를 불렀다.

+0

이 예에서는 MEF 모듈을 다른 컨트롤에로드합니다. 1 개의 컨트롤에 많은 모듈을로드하고 싶었습니다. 예를 들어 많은 항목이있는 메뉴 컨트롤을 가지고 있고 메뉴 항목 중 하나를 클릭하면 특정 모듈을 셸의 공유 영역으로로드합니다. 그게 가능하니? – Pawan

+0

네, 가능하다고 생각합니다. 사실 내 응용 프로그램에서 다음주에 구현할 계획입니다. 컨테이너 (이름있는 인스턴스)에 모든 하위 창을 등록한 다음 MenuItem.Clicked 이벤트에서 특정 지역의 모든 컨트롤을 제거하고 올바른 위치에 삽입 할 수 있다고 생각합니다. BTW, 나는 Composite Application Guidance (Visual Studio 2008의 프리즘 이전 버전) – surfen