summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core/NavigationPage.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Core/NavigationPage.cs')
-rw-r--r--Xamarin.Forms.Core/NavigationPage.cs19
1 files changed, 13 insertions, 6 deletions
diff --git a/Xamarin.Forms.Core/NavigationPage.cs b/Xamarin.Forms.Core/NavigationPage.cs
index 7b393b9c..fdafec06 100644
--- a/Xamarin.Forms.Core/NavigationPage.cs
+++ b/Xamarin.Forms.Core/NavigationPage.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
using System.Linq;
using System.Threading.Tasks;
using Xamarin.Forms.Internals;
@@ -61,17 +62,23 @@ namespace Xamarin.Forms
internal Task CurrentNavigationTask { get; set; }
- Stack<Page> INavigationPageController.StackCopy
+ Page INavigationPageController.Peek(int depth)
{
- get
+ if (depth < 0)
{
- var result = new Stack<Page>(PageController.InternalChildren.Count);
- foreach (Page page in PageController.InternalChildren)
- result.Push(page);
- return result;
+ return null;
}
+
+ if (PageController.InternalChildren.Count <= depth)
+ {
+ return null;
+ }
+
+ return (Page)PageController.InternalChildren[PageController.InternalChildren.Count - depth - 1];
}
+ IEnumerable<Page> INavigationPageController.Pages => PageController.InternalChildren.Cast<Page>();
+
int INavigationPageController.StackDepth
{
get { return PageController.InternalChildren.Count; }