private void Enqueue(Type screenType)
        {
            var typeToEnque = ScreensManager.GetInstanceByType(screenType);

            if (_typesToShow.Count > 0)
            {
                if (!_typesToShow.Contains(screenType))
                {
                    for (int i = 0; i < _typesToShow.Count; i++)
                    {
                        var enquedType = ScreensManager.GetInstanceByType(_typesToShow[i]);

                        if (typeToEnque.Priority >= enquedType.Priority)
                        {
                            _typesToShow.Insert(i, screenType);
                            return;
                        }
                    }

                    _typesToShow.Add(screenType);
                }
            }
            else
            {
                _typesToShow.Insert(0, screenType);
            }
        }
        public override void Show(Type screenType)
        {
            BaseScreen to = ScreensManager.GetInstanceByType(screenType);

            Transitions.Transition(CurrentTop, to);
            CurrentTop = to;
        }
        protected void ShowNext()
        {
            if (_typesToShow.Count > 0)
            {
                Type nextType = _typesToShow[_typesToShow.Count - 1];

                _typesToShow.RemoveAt(_typesToShow.Count - 1);
                ShowInstance(ScreensManager.GetInstanceByType(nextType));
            }
        }
 public override void Show(Type screenType)
 {
     if (CurrentTop == null)
     {
         ShowInstance(ScreensManager.GetInstanceByType(screenType));
     }
     else
     {
         Enqueue(screenType);
     }
 }
        public override void Show(Type screenType)
        {
            BaseScreen to = ScreensManager.GetInstanceByType(screenType);

            Transitions.Transition(null, to);
        }
        public override void Hide(Type screenType)
        {
            BaseScreen to = ScreensManager.GetInstanceByType(screenType);

            Transitions.Transition(to, null);
        }