public MainViewModel(
            IUserService userService,
            IViewModelFactory factory,
            ICommandFactory commandFactory,
            IMessenger messenger,
            IWindowStorage <ViewModelBase> windowStorage)
        {
            this.userService   = userService;
            this.factory       = factory;
            this.messenger     = messenger;
            this.windowStorage = windowStorage;

            CloseCommand         = commandFactory.Create(OnClose);
            QuitCommand          = commandFactory.Create(OnQuit);
            OpenCommand          = commandFactory.Create(OnOpen);
            StateChangedCommand  = commandFactory.Create(OnStateChanged);
            MenuButtonClick      = commandFactory.Create(OnHideMenu);
            SettingsButtonClick  = commandFactory.Create(OnSettingsClick);
            KeyChangeButtonClick = commandFactory.Create(OnKeyChangeClick);
            LogOutButtonClick    = commandFactory.Create(OnLogOut);

            OnChangeView(new SwitchViewMessage
            {
                NextView = typeof(AuthenticationViewModel)
            });
        }
        public MainWindow(MainViewModel viewModel, IWindowStorage <ViewModelBase> windowStorage)
        {
            InitializeComponent();

            var subscribable = viewModel as ISubscribable;

            subscribable?.Subscribe();

            DataContext = viewModel;

            windowStorage.Register(viewModel, this);

            this.viewModel = viewModel;
        }