2009-11-05 5 views
2

클릭 한 번으로 EventAggregator를 사용하여 이벤트를 게시하는 메뉴 컨트롤을 사용하여 내 응용 프로그램을 통해 탐색 기능을 구현했습니다. 아래에 표시된 것과 같습니다.프리즘 내비게이션 컨트롤에서 뷰를 동적으로로드하는 가장 좋은 방법은 무엇입니까

내 응용 프로그램에있는 대부분의 모듈은이 이벤트의 구독자입니다.

private void LoadRequestedView(MenuModel menuItem) 
{ 
    try 
    { 
     IDashboardViewModel viewModel = this.container.Resolve(Type.GetType(menuItem.PresenterClass)) as IDashboardViewModel; 
     this.regionManager.Regions["ViewRegion"].Add(viewModel.View); 
     this.regionManager.Regions["ViewRegion"].Activate(viewModel.View); 
     this.eventAggregator.GetEvent<ViewNotificationEvent>().Publish(menuItem.Description); 
    } 
    catch (ResolutionFailedException) { } 
} 

방법이 구현 평가 않은 : 그들은보기에

this.eventAggregator.GetEvent<ViewRequestedEvent>() 
      .Subscribe(LoadViewRequest, ThreadOption.UIThread, true, i => i.Module == "Dashboard"); 

요청은 다음과 같이 처리 모듈과 관련된 이벤트 만 구독 필터를 사용? 그것이 짜증이 난다고 생각한다면, 그것을 향상 시키거나 더 나은 대안을 제안하도록 도와주세요.

답변

0

나는 당신이이 모델에 대한 관심의 분리를위한 특정 부족이 있다고 생각한다. 나는 일반적으로 셸에 대한 프레젠테이션을 유지하려고합니다. 이것을 구현하는 방법에 대한이 질문을보십시오. 그것은 단순화하고 모듈에서 멀리 떨어진 RegionManager의 아이디어를 추상화합니다 :

Integrating Modules with Application in Prism aka CompositeWpf

관련 문제