2009-11-05 18 views
2

我已經通過我的應用程序使用Menu控件實現了導航,該控件在單擊菜單項時使用EventAggregator發佈事件。類似如下所示,什麼是從Prism中的導航控件動態加載視圖的最佳方法

this.eventAggregator.GetEvent<ViewRequestedEvent>() 
        .Publish(new BusinessObject.Model.MenuModel 
        { 
         Module = "Dashboard", 
         PresenterClass = "DashboardViewModel" 
        }); 

我的應用程序中的大部分模塊都是此事件的訂戶。他們使用過濾器來只訂閱相關的模塊

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

請求查看被類似處理這些事件:

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) { } 
} 

你如何評價這個實現?如果你認爲這很糟糕,請幫助我改進或者提出一個更好的選擇。

回答

相關問題