Beispiel #1
0
        /// <summary>
        /// Permet de revenir en arriére dans la pile de navigation des pages
        /// </summary>
        private bool SetGoBack(Type historyViewModel)
        {
            //Sauvegarde de l'état actuel pour revenir en arriére si il le faut
#if WINDOWS_PHONE
            var        navigationSave = _rootFrame.CurrentSource;
            System.Uri navigationState;
#else
            var    navigationSave = _rootFrame.GetNavigationState();
            string navigationState;
#endif

            //Chargement de l'état voulu
            if (_historyNavigation.ContainsKey(historyViewModel))
            {
                if (_historyNavigation.TryGetValue(historyViewModel, out navigationState))
                {
#if WINDOWS_PHONE
                    _rootFrame.GoBack();
#else
                    _rootFrame.SetNavigationState(navigationState);
#endif
                }

#if WINDOWS_PHONE
                //TODO: Voir comment assurer une vérification de la cohérence de page
#else
                //Vérification de la bonne cohérence
                Type historyType;
                var  currentType = _rootFrame.CurrentSourcePageType;
                var  result      = _viewsRegister.TryGetValue(historyViewModel, out historyType);
                if (result)
                {
                    if (currentType != historyType)
                    {
                        //On reprend la position précédente car le type de page dans la Frame
                        //ne correspond pas à celui vers lequel on doit revenir
                        _rootFrame.SetNavigationState(navigationSave);
                        return(false);
                    }
                }
#endif
            }
            return(true);
        }