public NavigationUrl Build(Action <NavigationUrlQuery> updateQuery = null) { var newQuery = new NavigationUrlQuery(url.Segments.Last().Query); var segments = new List <NavigationUrlSegment>(); for (int i = 0; i < this.url.Segments.Count(); i++) { var segment = this.url.Segments[i]; if (i == this.url.Segments.Length - 1) { segment = new NavigationUrlSegment(segment.Value, newQuery); } else { segment = new NavigationUrlSegment(segment.Value); } segments.Add(segment); } updateQuery?.Invoke(newQuery); var newUrl = new NavigationUrl(segments.ToArray()); return(newUrl); }
public void Navigate <T>(Action <NavigationUrlSegment> prepareQuery, NavigationDirection direction = NavigationDirection.Forward) { var segment = new NavigationUrlSegment(typeof(T).FullName); prepareQuery(segment); this.Navigate(new NavigationUrl(new [] { segment }), direction); }
/// <summary> /// Adds the argument to the query of the last segment. /// </summary> /// <param name="name">Name.</param> /// <param name="value">Value.</param> /// <typeparam name="T">The 1st type parameter.</typeparam> public NavigationUrl AddArg <T>(string name, T value) { var segment = this.Segments.LastOrDefault(); if (segment == null) { segment = new NavigationUrlSegment(""); this.Segments = new[] { segment }; } segment.AddArg(name, value); return(this); }