Exemplo n.º 1
0
        public static INavigationParameters GetSegmentParameters(string uriSegment, INavigationParameters parameters)
        {
            var navParameters = UriParsingHelper.GetSegmentParameters(uriSegment);

            if (parameters == null)
            {
                return(navParameters);
            }

            foreach (KeyValuePair <string, object> navigationParameter in parameters)
            {
                navParameters.Add(navigationParameter.Key, navigationParameter.Value);
            }

            return(navParameters);
        }
        public async Task <INavigationResult> NavigateAsync(Uri uri, INavigationParameters parameters)
        {
            var navigationSegments = UriParsingHelper.GetUriSegments(uri);

            foreach (var navigationSegment in navigationSegments)
            {
                var segnentParameters = UriParsingHelper.GetSegmentParameters(navigationSegment, parameters);

                var segmentName = UriParsingHelper.GetSegmentName(navigationSegment);

                var navigationResult = await NavigateAsync(segmentName, segnentParameters);

                if (!navigationResult.Success)
                {
                    return(new NavigationResult {
                        Exception = new InvalidOperationException("Target not found."), Success = false
                    });
                }
            }

            return(new NavigationResult {
                Success = true
            });
        }