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) { }
}
你如何評價這個實現?如果你認爲這很糟糕,請幫助我改進或者提出一個更好的選擇。