Exemple #1
0
        public bool Navigate(string pageToken, object parameter)
        {
            Type pageType = _navigationResolver(pageToken);

            if (pageType != null)
            {
                if (typeof(IContentPage).GetTypeInfo().IsAssignableFrom(pageType.GetTypeInfo()))
                {
                    if (!IsInShellPage())
                    {
                        _frameNavigationService.Navigate("AppShell", null);
                        InitContentFrame();
                    }
                    var lastNavigationParameter =
                        _sessionStateService.SessionState.ContainsKey(LAST_CONTENT_NAVIGATION_PARAMETER_KEY)
                            ? _sessionStateService.SessionState[LAST_CONTENT_NAVIGATION_PARAMETER_KEY]
                            : null;
                    var lastPageTypeFullName =
                        _sessionStateService.SessionState.ContainsKey(LAST_CONTENT_NAVIGATION_PAGE_KEY)
                            ? _sessionStateService.SessionState[LAST_CONTENT_NAVIGATION_PAGE_KEY] as string
                            : string.Empty;
                    if (lastPageTypeFullName != pageType.FullName || lastNavigationParameter != parameter)
                    {
                        return(_contentFrameFacade.Navigate(pageType, parameter));
                    }
                }
                else
                {
                    if (_contentFrameFacade != null)
                    {
                        _sessionStateService.UnregisterFrame(_contentFrameFacade);
                        _contentFrameFacade = null;
                    }
                    return(_frameNavigationService.Navigate(pageToken, parameter));
                }
            }
            return(false);
        }
        /// <summary>
        /// Navigates to the page with the specified page token, passing the specified parameter.
        /// </summary>
        /// <param name="pageToken">The page token.</param>
        /// <param name="parameter">The parameter.</param>
        /// <returns>Returns <c>true</c> if the navigation succeeds: otherwise, <c>false</c>.</returns>
        public bool Navigate(string pageToken, object parameter)
        {
            Type pageType = _navigationResolver(pageToken);

            if (pageType == null)
            {
                var resourceLoader = new ResourceLoader(Constants.StoreAppsInfrastructureResourceMapId);
                var error          = string.Format(CultureInfo.CurrentCulture, resourceLoader.GetString("FrameNavigationServiceUnableResolveMessage"), pageToken);
                throw new ArgumentException(error, "pageToken");
            }

            // Get the page type and parameter of the last navigation to check if we
            // are trying to navigate to the exact same page that we are currently on
            var lastNavigationParameter = _sessionStateService.SessionState.ContainsKey(LastNavigationParameterKey) ? _sessionStateService.SessionState[LastNavigationParameterKey] : null;
            var lastPageTypeFullName    = _sessionStateService.SessionState.ContainsKey(LastNavigationPageKey) ? _sessionStateService.SessionState[LastNavigationPageKey] as string : string.Empty;

            if (lastPageTypeFullName != pageType.FullName || !AreEquals(lastNavigationParameter, parameter))
            {
                return(_frame.Navigate(pageType, parameter));
            }

            return(false);
        }
Exemple #3
0
 /// <summary>
 /// Navigates to the page.
 /// </summary>
 /// <param name="sourcePageType">The page type</param>
 /// <returns></returns>
 public async Task NavigateAsync(Type sourcePageType)
 {
     await PerformNavigationAsync(() => frameFacade.Navigate(sourcePageType));
 }