/*
  * Here we handle Close command by requesting MenuScreenViewModel.
  * Indeed, all the SubScreens are tightly coupled with MenuScreen
  * However, it is not difficult at all to introduce more generic solution.
  * Or you can move this logic to the MainMenuService, to avoid this coupling.
  * You'll need to add CloseCommand handler to the MainMenuService and implement it.
  */
 public override void Close(SubScreenViewModel viewModel) {
     base.Close(viewModel);
     Publish(new RequestMainMenuScreenCommand()
     {
         ScreenType = typeof(MenuScreenViewModel)
     });
 }
 private void ScreenAdded(SubScreenViewModel screen)
 {
     //if screen is of current type, activate it; else deactivate it
     screen.IsActive = MainMenuRoot.CurrentScreenType == screen.GetType();
 }
 public virtual void Close(SubScreenViewModel viewModel) {
 }
 public override void InitializeSubScreen(SubScreenViewModel viewModel) {
     base.InitializeSubScreen(viewModel);
 }
 public virtual void InitializeSubScreen(SubScreenViewModel viewModel) {
     // This is called when a SubScreenViewModel is created
     viewModel.Close.Action = this.CloseHandler;
     SubScreenViewModelManager.Add(viewModel);
 }