/// <summary> /// Gets the current View of the given module and sets its ViewModel as the data context of the ModuleProperties module /// </summary> /// <param name="loadInfo"></param> public void SetModuleContext(ModuleLoadInfo loadInfo) { ModuleViewBase view = null; if (loadInfo != null) { view = loadInfo.RenderedView; if (view == null) { string moduleName = loadInfo.ModuleName; string viewName = loadInfo.ViewName ?? moduleName; IModulePresentation module = TryResolve <IModulePresentation>(moduleName); if (module != null) { view = module.GetView(viewName) as ModuleViewBase; } } } ModuleViewModelBase viewModel = view == null ? null : view.DataContext as ModuleViewModelBase; eventAggregator.GetEvent <ActivateModuleContextEvent>().Publish(viewModel); }
/// <summary> /// Display a module the specified region with the given view. /// </summary> /// <param name="loadInfo">module load descriptor</param> /// <exception cref="ArgumentNullException">Empty module name.</exception> public void DisplayModule(ModuleLoadInfo loadInfo) { string moduleName = loadInfo.ModuleName; string regionName = loadInfo.RegionName; string viewName = loadInfo.ViewName ?? loadInfo.ModuleName; if (string.IsNullOrEmpty(moduleName)) { throw new ArgumentNullException(moduleName, "Illegal module name to load."); } ModuleViewBase currentView; try { moduleManager.LoadModule(moduleName); IModulePresentation module = TryResolve <IModulePresentation>(moduleName); if (module != null) { IRegion region = regionManager.Regions[regionName]; currentView = (ModuleViewBase)region.GetView(viewName); if (currentView == null) { currentView = (ModuleViewBase)module.GetView(viewName); if (currentView.ViewModel != null) { currentView.ViewModel.LoadInfo = loadInfo; } else { // TODO rerdelyi 100705: some action should be taken, e.g. throw exception } loadInfo.RenderedView = currentView; region.Add(currentView, viewName); region.Activate(currentView); currentView.LoadData(loadInfo.LoadCommand, loadInfo.LoadParameter); } else { // TODO rerdelyi 100705: some action should be taken, e.g. throw exception } //string statusBarRegionName = regionName + STATUSBAR; //string statusBarViewName = viewName + STATUSBAR; //if (regionManager.Regions.ContainsRegionWithName(statusBarRegionName)) //{ // IRegion statusBarRegion = regionManager.Regions[statusBarRegionName]; // if (statusBarRegion != null && statusBarRegion.GetView(statusBarViewName) == null) // { // var statusBar = module.GetStatusBar(viewName); // statusBar.DataContext = currentView.ViewModel; // statusBarRegion.Add(statusBar, statusBarViewName); // statusBarRegion.Activate(statusBar); // } //} } else { throw new MissingMemberException(string.Format("Unable to display \"{0}\" module.", moduleName)); } } catch (Exception ex) { throw new Exception(string.Format("Unable to display \"{0}\" module.", moduleName), ex); } }