예제 #1
0
        // This method removes a screen from the application
        // and cleans up resources related to this screen
        private bool removeScreen(IScreen screen)
        {
            if (!screen.CanClose())
            {
                return(false);
            }

            _events.RemoveListener(screen);
            _screens.Remove(screen);

            _shellService.ClearTransient();

            return(true);
        }
예제 #2
0
        public void OpenScreen(IScreen screen)
        {
            if (screen == null)
            {
                return;
            }

            if (screen.Equals(_activeScreen))
            {
                return;
            }

            if (_activeScreen != null && !_activeScreen.CanClose())
            {
                return;
            }

            screen.Activate();
            _activeScreen = screen;

            NotifyOfPropertyChange(() => ActiveScreen);
        }