public ProjectUseCase(
            // Get the ViewToRegionBinder that the baseclass needs
            IViewToRegionBinder viewtoToRegionBinder
            , IRegionManager regionManager
            , IUnityContainer container
            , IEventAggregator eventAggregator
            // Get the factories that can create the viewmodels
            , ObjectFactory <ProjectListViewModel> ProjectViewModel
            , ObjectFactory <ProjectToolbarViewModel> ProjectToolbarViewModel
            , IApplicationModel applicationModel
            , IModelVisualizationRegistry modelVisualizationRegistry)
            : base(viewtoToRegionBinder)
        {
            this.ApplicationModel = applicationModel;
            this.Container        = container;

            // Just before the view is initialized for the first time
            this.AddInitializationMethods(
                // Create the emailViewModel and assign it to this variable
                () => this._projectListViewModel      = ProjectViewModel.CreateInstance()
                , () => this._projectToolbarViewModel = ProjectToolbarViewModel.CreateInstance());

            // Register visualizations for these view models. This means: whenever a viewmodel is displayed,
            // use this type of view to visualize it.
            modelVisualizationRegistry.Register <ProjectListViewModel, ProjectListView>();
            modelVisualizationRegistry.Register <ProjectToolbarViewModel, ProjectToolbarView>();
            modelVisualizationRegistry.Register <ProjectEditViewModel, ProjectEditView>();

            // Register Dialog Popup service...
            container.RegisterType <IProjectAssignService, ProjectAssignmentService>(new ContainerControlledLifetimeManager());
            container.RegisterInstance(container.Resolve <IProjectAssignService>());

            regionManager.RegisterViewWithRegion("ProjectEditRegion", typeof(ProjectEditViewModel));

            // watch for OpenProjectEvents fired by (Link)Button command in ResourceEditViewModel...
            eventAggregator.GetEvent <OpenProjectByIdEvent>().Subscribe(OpenProjectById);
        }
        public ProjectUseCase(
            // Get the ViewToRegionBinder that the baseclass needs
            IViewToRegionBinder viewtoToRegionBinder
            , IRegionManager regionManager
            , IUnityContainer container
            , IEventAggregator eventAggregator
            // Get the factories that can create the viewmodels
            , ObjectFactory<ProjectListViewModel> ProjectViewModel
            , ObjectFactory<ProjectToolbarViewModel> ProjectToolbarViewModel
            , IApplicationModel applicationModel
            , IModelVisualizationRegistry modelVisualizationRegistry)
           : base(viewtoToRegionBinder)
        {
            this.ApplicationModel = applicationModel;
            this.Container = container;

            // Just before the view is initialized for the first time
            this.AddInitializationMethods(
                // Create the emailViewModel and assign it to this variable
               () => this._projectListViewModel = ProjectViewModel.CreateInstance()
               , () => this._projectToolbarViewModel = ProjectToolbarViewModel.CreateInstance());

            // Register visualizations for these view models. This means: whenever a viewmodel is displayed, 
            // use this type of view to visualize it. 
            modelVisualizationRegistry.Register<ProjectListViewModel, ProjectListView>();
            modelVisualizationRegistry.Register<ProjectToolbarViewModel, ProjectToolbarView>();
            modelVisualizationRegistry.Register<ProjectEditViewModel, ProjectEditView>();

            // Register Dialog Popup service...
            container.RegisterType<IProjectAssignService, ProjectAssignmentService>(new ContainerControlledLifetimeManager());
            container.RegisterInstance(container.Resolve<IProjectAssignService>());

            regionManager.RegisterViewWithRegion("ProjectEditRegion", typeof(ProjectEditViewModel));

            // watch for OpenProjectEvents fired by (Link)Button command in ResourceEditViewModel...
            eventAggregator.GetEvent<OpenProjectByIdEvent>().Subscribe(OpenProjectById);
        }