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 }); }