@@ -355,6 +355,7 @@ public virtual async Task<INavigationResult> NavigateFromAsync(string viewName,
355
355
var foundPage = navigationPages . FirstOrDefault ( page => ViewModelLocator . GetNavigationName ( page ) == viewName ) ;
356
356
if ( foundPage is null )
357
357
{
358
+ // Find a page from parents.
358
359
var page = currentPage ;
359
360
while ( page != null )
360
361
{
@@ -366,14 +367,19 @@ public virtual async Task<INavigationResult> NavigateFromAsync(string viewName,
366
367
}
367
368
else
368
369
{
370
+ // Insert RemovePageSegment.
369
371
var removePageCount = navigationPages . IndexOf ( foundPage ) ;
370
372
371
- // Insert RemovePageSegment.
372
- var routeString = route . ToString ( ) ;
373
+ var tempQueue = new Queue < string > ( ) ;
373
374
for ( int i = 0 ; i < removePageCount ; i ++ )
374
375
{
375
- AddToFront ( navigationSegments , RemovePageSegment ) ;
376
+ tempQueue . Enqueue ( RemovePageSegment ) ;
377
+ }
378
+ while ( navigationSegments . Count > 0 )
379
+ {
380
+ tempQueue . Enqueue ( navigationSegments . Dequeue ( ) ) ;
376
381
}
382
+ navigationSegments = tempQueue ;
377
383
}
378
384
379
385
await ProcessNavigation ( currentPage , navigationSegments , parameters , null , null ) ;
@@ -392,23 +398,6 @@ public virtual async Task<INavigationResult> NavigateFromAsync(string viewName,
392
398
}
393
399
}
394
400
395
- private static void AddToFront < T > ( Queue < T > queue , T element )
396
- {
397
- var tempQueue = new Queue < T > ( ) ;
398
-
399
- while ( queue . Count > 0 )
400
- {
401
- tempQueue . Enqueue ( queue . Dequeue ( ) ) ;
402
- }
403
-
404
- queue . Enqueue ( element ) ;
405
-
406
- while ( tempQueue . Count > 0 )
407
- {
408
- queue . Enqueue ( tempQueue . Dequeue ( ) ) ;
409
- }
410
- }
411
-
412
401
/// <summary>
413
402
/// Selects a Tab of the TabbedPage parent.
414
403
/// </summary>
0 commit comments