diff options
15 files changed, 630 insertions, 97 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs b/Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs index 1d3d4bd2..a6abee55 100644 --- a/Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs +++ b/Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs @@ -203,7 +203,7 @@ namespace Xamarin.Forms.Core.UnitTests await nav.PushAsync (child1); await nav.PushAsync (child2); - var copy = nav.StackCopy; + var copy = ((INavigationPageController)nav).StackCopy; Assert.AreEqual (child2, copy.Pop ()); Assert.AreEqual (child1, copy.Pop ()); @@ -217,7 +217,7 @@ namespace Xamarin.Forms.Core.UnitTests var nav = new NavigationPage (root); Assert.AreEqual (root, nav.LogicalChildren[0]); - Assert.AreEqual (1, nav.StackDepth); + Assert.AreEqual (1, ((INavigationPageController)nav).StackDepth); } [Test] diff --git a/Xamarin.Forms.Core/INavigationPageController.cs b/Xamarin.Forms.Core/INavigationPageController.cs new file mode 100644 index 00000000..eddbe750 --- /dev/null +++ b/Xamarin.Forms.Core/INavigationPageController.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Xamarin.Forms.Internals; + +namespace Xamarin.Forms +{ + public interface INavigationPageController + { + Stack<Page> StackCopy { get; } + + int StackDepth { get; } + + Task<Page> PopAsyncInner(bool animated, bool fast = false); + + event EventHandler<NavigationRequestedEventArgs> InsertPageBeforeRequested; + + event EventHandler<NavigationRequestedEventArgs> PopRequested; + + event EventHandler<NavigationRequestedEventArgs> PopToRootRequested; + + event EventHandler<NavigationRequestedEventArgs> PushRequested; + + event EventHandler<NavigationRequestedEventArgs> RemovePageRequested; + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Core/NavigationRequestedEventArgs.cs b/Xamarin.Forms.Core/Internals/NavigationRequestedEventArgs.cs index b21cffce..32022f14 100644 --- a/Xamarin.Forms.Core/NavigationRequestedEventArgs.cs +++ b/Xamarin.Forms.Core/Internals/NavigationRequestedEventArgs.cs @@ -1,8 +1,8 @@ using System.Threading.Tasks; -namespace Xamarin.Forms +namespace Xamarin.Forms.Internals { - internal class NavigationRequestedEventArgs : NavigationEventArgs + public class NavigationRequestedEventArgs : NavigationEventArgs { public NavigationRequestedEventArgs(Page page, bool animated, bool realize = true) : base(page) { diff --git a/Xamarin.Forms.Core/NavigationPage.cs b/Xamarin.Forms.Core/NavigationPage.cs index 61545b11..b13fc6c4 100644 --- a/Xamarin.Forms.Core/NavigationPage.cs +++ b/Xamarin.Forms.Core/NavigationPage.cs @@ -2,12 +2,13 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Xamarin.Forms.Internals; using Xamarin.Forms.Platform; namespace Xamarin.Forms { [RenderWith(typeof(_NavigationPageRenderer))] - public class NavigationPage : Page, IPageContainer<Page> + public class NavigationPage : Page, IPageContainer<Page>, INavigationPageController { public static readonly BindableProperty BackButtonTitleProperty = BindableProperty.CreateAttached("BackButtonTitle", typeof(string), typeof(Page), null); @@ -58,7 +59,7 @@ namespace Xamarin.Forms internal Task CurrentNavigationTask { get; set; } - internal Stack<Page> StackCopy + Stack<Page> INavigationPageController.StackCopy { get { @@ -69,7 +70,7 @@ namespace Xamarin.Forms } } - internal int StackDepth + int INavigationPageController.StackDepth { get { return InternalChildren.Count; } } @@ -116,12 +117,12 @@ namespace Xamarin.Forms CurrentNavigationTask = tcs.Task; await oldTask; - Page page = await PopAsyncInner(animated); + Page page = await ((INavigationPageController)this).PopAsyncInner(animated); tcs.SetResult(true); return page; } - Task<Page> result = PopAsyncInner(animated); + Task<Page> result = ((INavigationPageController)this).PopAsyncInner(animated); CurrentNavigationTask = result; return await result; } @@ -206,7 +207,7 @@ namespace Xamarin.Forms if (CurrentPage.SendBackButtonPressed()) return true; - if (StackDepth > 1) + if (((INavigationPageController)this).StackDepth > 1) { SafePop(); return true; @@ -215,11 +216,17 @@ namespace Xamarin.Forms return base.OnBackButtonPressed(); } - internal event EventHandler<NavigationRequestedEventArgs> InsertPageBeforeRequested; + event EventHandler<NavigationRequestedEventArgs> InsertPageBeforeRequestedInternal; - internal async Task<Page> PopAsyncInner(bool animated, bool fast = false) + event EventHandler<NavigationRequestedEventArgs> INavigationPageController.InsertPageBeforeRequested { - if (StackDepth == 1) + add { InsertPageBeforeRequestedInternal += value; } + remove { InsertPageBeforeRequestedInternal -= value; } + } + + async Task<Page> INavigationPageController.PopAsyncInner(bool animated, bool fast) + { + if (((INavigationPageController)this).StackDepth == 1) { return null; } @@ -230,7 +237,7 @@ namespace Xamarin.Forms var removed = true; - EventHandler<NavigationRequestedEventArgs> requestPop = PopRequested; + EventHandler<NavigationRequestedEventArgs> requestPop = PopRequestedInternal; if (requestPop != null) { requestPop(this, args); @@ -252,13 +259,37 @@ namespace Xamarin.Forms return page; } - internal event EventHandler<NavigationRequestedEventArgs> PopRequested; + event EventHandler<NavigationRequestedEventArgs> PopRequestedInternal; + + event EventHandler<NavigationRequestedEventArgs> INavigationPageController.PopRequested + { + add { PopRequestedInternal += value; } + remove { PopRequestedInternal -= value; } + } - internal event EventHandler<NavigationRequestedEventArgs> PopToRootRequested; + event EventHandler<NavigationRequestedEventArgs> PopToRootRequestedInternal; - internal event EventHandler<NavigationRequestedEventArgs> PushRequested; + event EventHandler<NavigationRequestedEventArgs> INavigationPageController.PopToRootRequested + { + add { PopToRootRequestedInternal += value; } + remove { PopToRootRequestedInternal -= value; } + } - internal event EventHandler<NavigationRequestedEventArgs> RemovePageRequested; + event EventHandler<NavigationRequestedEventArgs> PushRequestedInternal; + + event EventHandler<NavigationRequestedEventArgs> INavigationPageController.PushRequested + { + add { PushRequestedInternal += value; } + remove { PushRequestedInternal -= value; } + } + + event EventHandler<NavigationRequestedEventArgs> RemovePageRequestedInternal; + + event EventHandler<NavigationRequestedEventArgs> INavigationPageController.RemovePageRequested + { + add { RemovePageRequestedInternal += value; } + remove { RemovePageRequestedInternal -= value; } + } void InsertPageBefore(Page page, Page before) { @@ -268,7 +299,7 @@ namespace Xamarin.Forms if (InternalChildren.Contains(page)) throw new ArgumentException("Cannot insert page which is already in the navigation stack"); - EventHandler<NavigationRequestedEventArgs> handler = InsertPageBeforeRequested; + EventHandler<NavigationRequestedEventArgs> handler = InsertPageBeforeRequestedInternal; if (handler != null) handler(this, new NavigationRequestedEventArgs(page, before, false)); @@ -282,7 +313,7 @@ namespace Xamarin.Forms async Task PopToRootAsyncInner(bool animated) { - if (StackDepth == 1) + if (((INavigationPageController)this).StackDepth == 1) return; var root = (Page)InternalChildren.First(); @@ -293,7 +324,7 @@ namespace Xamarin.Forms var args = new NavigationRequestedEventArgs(root, animated); - EventHandler<NavigationRequestedEventArgs> requestPopToRoot = PopToRootRequested; + EventHandler<NavigationRequestedEventArgs> requestPopToRoot = PopToRootRequestedInternal; if (requestPopToRoot != null) { requestPopToRoot(this, args); @@ -315,7 +346,7 @@ namespace Xamarin.Forms var args = new NavigationRequestedEventArgs(page, animated); - EventHandler<NavigationRequestedEventArgs> requestPush = PushRequested; + EventHandler<NavigationRequestedEventArgs> requestPush = PushRequestedInternal; if (requestPush != null) { requestPush(this, args); @@ -337,7 +368,7 @@ namespace Xamarin.Forms void RemovePage(Page page) { - if (page == CurrentPage && StackDepth <= 1) + if (page == CurrentPage && ((INavigationPageController)this).StackDepth <= 1) throw new InvalidOperationException("Cannot remove root page when it is also the currently displayed page."); if (page == CurrentPage) { @@ -349,7 +380,7 @@ namespace Xamarin.Forms if (!InternalChildren.Contains(page)) throw new ArgumentException("Page to remove must be contained on this Navigation Page"); - EventHandler<NavigationRequestedEventArgs> handler = RemovePageRequested; + EventHandler<NavigationRequestedEventArgs> handler = RemovePageRequestedInternal; if (handler != null) handler(this, new NavigationRequestedEventArgs(page, true)); diff --git a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj index 24160a53..e5a1b640 100644 --- a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj +++ b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj @@ -94,6 +94,7 @@ <Compile Include="EmailKeyboard.cs" /> <Compile Include="IEntryController.cs" /> <Compile Include="IImageController.cs" /> + <Compile Include="INavigationPageController.cs" /> <Compile Include="Internals\EvalRequested.cs" /> <Compile Include="ExportEffectAttribute.cs" /> <Compile Include="ExpressionSearch.cs" /> @@ -169,7 +170,7 @@ <Compile Include="ModalPushingEventArgs.cs" /> <Compile Include="NavigationEventArgs.cs" /> <Compile Include="NavigationModel.cs" /> - <Compile Include="NavigationRequestedEventArgs.cs" /> + <Compile Include="Internals\NavigationRequestedEventArgs.cs" /> <Compile Include="NotifyCollectionChangedEventArgsEx.cs" /> <Compile Include="NotifyCollectionChangedEventArgsExtensions.cs" /> <Compile Include="NullEffect.cs" /> diff --git a/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs index 30733c64..7196cf8c 100644 --- a/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs +++ b/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs @@ -15,6 +15,7 @@ using Android.Support.V4.Widget; using Android.Support.V7.Graphics.Drawable; using Android.Util; using Android.Views; +using Xamarin.Forms.Internals; using ActionBarDrawerToggle = Android.Support.V7.App.ActionBarDrawerToggle; using AView = Android.Views.View; using AToolbar = Android.Support.V7.Widget.Toolbar; @@ -137,11 +138,14 @@ namespace Xamarin.Forms.Platform.Android.AppCompat IVisualElementRenderer renderer = Android.Platform.GetRenderer(child); renderer?.Dispose(); } - Element.PushRequested -= OnPushed; - Element.PopRequested -= OnPopped; - Element.PopToRootRequested -= OnPoppedToRoot; - Element.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; - Element.RemovePageRequested -= OnRemovePageRequested; + + var navController = (INavigationPageController)Element; + + navController.PushRequested -= OnPushed; + navController.PopRequested -= OnPopped; + navController.PopToRootRequested -= OnPoppedToRoot; + navController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; + navController.RemovePageRequested -= OnRemovePageRequested; Element.SendDisappearing(); } @@ -188,11 +192,13 @@ namespace Xamarin.Forms.Platform.Android.AppCompat if (e.OldElement != null) { - e.OldElement.PushRequested -= OnPushed; - e.OldElement.PopRequested -= OnPopped; - e.OldElement.PopToRootRequested -= OnPoppedToRoot; - e.OldElement.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; - e.OldElement.RemovePageRequested -= OnRemovePageRequested; + var oldNavController = (INavigationPageController)e.OldElement; + + oldNavController.PushRequested -= OnPushed; + oldNavController.PopRequested -= OnPopped; + oldNavController.PopToRootRequested -= OnPoppedToRoot; + oldNavController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; + oldNavController.RemovePageRequested -= OnRemovePageRequested; RemoveAllViews(); if (_toolbar != null) @@ -220,14 +226,16 @@ namespace Xamarin.Forms.Platform.Android.AppCompat _toolbarTracker.AdditionalTargets = parents; UpdateMenu(); - e.NewElement.PushRequested += OnPushed; - e.NewElement.PopRequested += OnPopped; - e.NewElement.PopToRootRequested += OnPoppedToRoot; - e.NewElement.InsertPageBeforeRequested += OnInsertPageBeforeRequested; - e.NewElement.RemovePageRequested += OnRemovePageRequested; + var navController = (INavigationPageController)e.NewElement; + + navController.PushRequested += OnPushed; + navController.PopRequested += OnPopped; + navController.PopToRootRequested += OnPoppedToRoot; + navController.InsertPageBeforeRequested += OnInsertPageBeforeRequested; + navController.RemovePageRequested += OnRemovePageRequested; // If there is already stuff on the stack we need to push it - e.NewElement.StackCopy.Reverse().ForEach(p => PushViewAsync(p, false)); + ((INavigationPageController)e.NewElement).StackCopy.Reverse().ForEach(p => PushViewAsync(p, false)); } } @@ -415,7 +423,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat Task<bool> OnPopViewAsync(Page page, bool animated) { - Page pageToShow = Element.StackCopy.Skip(1).FirstOrDefault(); + Page pageToShow = ((INavigationPageController)Element).StackCopy.Skip(1).FirstOrDefault(); if (pageToShow == null) return Task.FromResult(false); @@ -593,10 +601,10 @@ namespace Xamarin.Forms.Platform.Android.AppCompat if (!removed) { UpdateToolbar(); - if (_drawerToggle != null && Element.StackDepth == 2) + if (_drawerToggle != null && ((INavigationPageController)Element).StackDepth == 2) AnimateArrowIn(); } - else if (_drawerToggle != null && Element.StackDepth == 2) + else if (_drawerToggle != null && ((INavigationPageController)Element).StackDepth == 2) AnimateArrowOut(); Device.StartTimer(TimeSpan.FromMilliseconds(200), () => @@ -680,7 +688,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat if (bar == null) return; - bool isNavigated = Element.StackDepth > 1; + bool isNavigated = ((INavigationPageController)Element).StackDepth > 1; bar.NavigationIcon = null; if (isNavigated) diff --git a/Xamarin.Forms.Platform.Android/Platform.cs b/Xamarin.Forms.Platform.Android/Platform.cs index 8c289ef4..c00b9544 100644 --- a/Xamarin.Forms.Platform.Android/Platform.cs +++ b/Xamarin.Forms.Platform.Android/Platform.cs @@ -872,7 +872,7 @@ namespace Xamarin.Forms.Platform.Android return false; bool hasMasterDetailPage = CurrentMasterDetailPage != null; - bool navigated = CurrentNavigationPage != null && CurrentNavigationPage.StackDepth > 1; + bool navigated = CurrentNavigationPage != null && ((INavigationPageController)CurrentNavigationPage).StackDepth > 1; bool navigationPageHasNavigationBar = CurrentNavigationPage != null && NavigationPage.GetHasNavigationBar(CurrentNavigationPage.CurrentPage); return navigationPageHasNavigationBar || (hasMasterDetailPage && !navigated); } @@ -880,7 +880,7 @@ namespace Xamarin.Forms.Platform.Android bool ShouldUpdateActionBarUpColor() { bool hasMasterDetailPage = CurrentMasterDetailPage != null; - bool navigated = CurrentNavigationPage != null && CurrentNavigationPage.StackDepth > 1; + bool navigated = CurrentNavigationPage != null && ((INavigationPageController)CurrentNavigationPage).StackDepth > 1; return (hasMasterDetailPage && navigated) || !hasMasterDetailPage; } @@ -903,7 +903,7 @@ namespace Xamarin.Forms.Platform.Android if (CurrentNavigationPage == null) return false; - bool pagePushed = CurrentNavigationPage.StackDepth > 1; + bool pagePushed = ((INavigationPageController)CurrentNavigationPage).StackDepth > 1; bool pushedPageHasBackButton = NavigationPage.GetHasBackButton(CurrentNavigationPage.CurrentPage); return pagePushed && pushedPageHasBackButton; diff --git a/Xamarin.Forms.Platform.Android/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/NavigationRenderer.cs index 91e052ca..395a0f82 100644 --- a/Xamarin.Forms.Platform.Android/Renderers/NavigationRenderer.cs +++ b/Xamarin.Forms.Platform.Android/Renderers/NavigationRenderer.cs @@ -2,6 +2,7 @@ using System; using System.Linq; using System.Threading.Tasks; using Android.Views; +using Xamarin.Forms.Internals; using AButton = Android.Widget.Button; using AView = Android.Views.View; using AndroidAnimation = Android.Animation; @@ -47,11 +48,13 @@ namespace Xamarin.Forms.Platform.Android if (Element != null) { - Element.PushRequested -= OnPushed; - Element.PopRequested -= OnPopped; - Element.PopToRootRequested -= OnPoppedToRoot; - Element.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; - Element.RemovePageRequested -= OnRemovePageRequested; + var navController = (INavigationPageController)Element; + + navController.PushRequested -= OnPushed; + navController.PopRequested -= OnPopped; + navController.PopToRootRequested -= OnPoppedToRoot; + navController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; + navController.RemovePageRequested -= OnRemovePageRequested; } } @@ -76,25 +79,27 @@ namespace Xamarin.Forms.Platform.Android if (e.OldElement != null) { - NavigationPage oldNav = e.OldElement; - oldNav.PushRequested -= OnPushed; - oldNav.PopRequested -= OnPopped; - oldNav.PopToRootRequested -= OnPoppedToRoot; - oldNav.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; - oldNav.RemovePageRequested -= OnRemovePageRequested; + var oldNavController = (INavigationPageController)e.OldElement; + + oldNavController.PushRequested -= OnPushed; + oldNavController.PopRequested -= OnPopped; + oldNavController.PopToRootRequested -= OnPoppedToRoot; + oldNavController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; + oldNavController.RemovePageRequested -= OnRemovePageRequested; RemoveAllViews(); } - NavigationPage nav = e.NewElement; - nav.PushRequested += OnPushed; - nav.PopRequested += OnPopped; - nav.PopToRootRequested += OnPoppedToRoot; - nav.InsertPageBeforeRequested += OnInsertPageBeforeRequested; - nav.RemovePageRequested += OnRemovePageRequested; + var newNavController = (INavigationPageController)e.NewElement; + + newNavController.PushRequested += OnPushed; + newNavController.PopRequested += OnPopped; + newNavController.PopToRootRequested += OnPoppedToRoot; + newNavController.InsertPageBeforeRequested += OnInsertPageBeforeRequested; + newNavController.RemovePageRequested += OnRemovePageRequested; // If there is already stuff on the stack we need to push it - nav.StackCopy.Reverse().ForEach(p => PushViewAsync(p, false)); + newNavController.StackCopy.Reverse().ForEach(p => PushViewAsync(p, false)); } protected override void OnLayout(bool changed, int l, int t, int r, int b) @@ -112,7 +117,7 @@ namespace Xamarin.Forms.Platform.Android protected virtual Task<bool> OnPopViewAsync(Page page, bool animated) { - Page pageToShow = Element.StackCopy.Skip(1).FirstOrDefault(); + Page pageToShow = ((INavigationPageController)Element).StackCopy.Skip(1).FirstOrDefault(); if (pageToShow == null) return Task.FromResult(false); diff --git a/Xamarin.Forms.Platform.WP8/NavigationPageRenderer.cs b/Xamarin.Forms.Platform.WP8/NavigationPageRenderer.cs index 35a77f21..2bd5b7b3 100644 --- a/Xamarin.Forms.Platform.WP8/NavigationPageRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/NavigationPageRenderer.cs @@ -5,6 +5,7 @@ using System.Diagnostics; using System.Linq; using System.Windows; using System.Windows.Controls; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.WinPhone { @@ -26,11 +27,13 @@ namespace Xamarin.Forms.Platform.WinPhone Action init = () => { - Element.PushRequested += PageOnPushed; - Element.PopRequested += PageOnPopped; - Element.PopToRootRequested += PageOnPoppedToRoot; - Element.RemovePageRequested += RemovePageRequested; - Element.InsertPageBeforeRequested += ElementOnInsertPageBeforeRequested; + var navController = (INavigationPageController)Element; + + navController.PushRequested += PageOnPushed; + navController.PopRequested += PageOnPopped; + navController.PopToRootRequested += PageOnPoppedToRoot; + navController.RemovePageRequested += RemovePageRequested; + navController.InsertPageBeforeRequested += ElementOnInsertPageBeforeRequested; Element.PropertyChanged += OnElementPropertyChanged; var platform = (Platform)Element.Platform; @@ -132,7 +135,7 @@ namespace Xamarin.Forms.Platform.WinPhone var platform = Element.Platform as Platform; if (platform != null) { - if (e.Page == Element.StackCopy.LastOrDefault()) + if (e.Page == ((INavigationPageController)Element).StackCopy.LastOrDefault()) e.Page.IgnoresContainerArea = true; e.Task = platform.PushCore(e.Page, Element, e.Animated, e.Realize).ContinueWith((t, o) => true, null); } diff --git a/Xamarin.Forms.Platform.WinRT/NavigationPageRenderer.cs b/Xamarin.Forms.Platform.WinRT/NavigationPageRenderer.cs index 8bcf207f..9fe59bad 100644 --- a/Xamarin.Forms.Platform.WinRT/NavigationPageRenderer.cs +++ b/Xamarin.Forms.Platform.WinRT/NavigationPageRenderer.cs @@ -12,6 +12,7 @@ using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Media.Animation; +using Xamarin.Forms.Internals; #if WINDOWS_UWP using Windows.UI.Xaml.Data; using Windows.UI.Core; @@ -154,8 +155,8 @@ namespace Xamarin.Forms.Platform.WinRT if (oldElement != null) { - oldElement.PushRequested -= OnPushRequested; - oldElement.PopRequested -= OnPopRequested; + ((INavigationPageController)oldElement).PushRequested -= OnPushRequested; + ((INavigationPageController)oldElement).PopRequested -= OnPopRequested; oldElement.InternalChildren.CollectionChanged -= OnChildrenChanged; oldElement.PropertyChanged -= OnElementPropertyChanged; } @@ -184,8 +185,8 @@ namespace Xamarin.Forms.Platform.WinRT UpdateTitleColor(); UpdateNavigationBarBackground(); Element.PropertyChanged += OnElementPropertyChanged; - Element.PushRequested += OnPushRequested; - Element.PopRequested += OnPopRequested; + ((INavigationPageController)Element).PushRequested += OnPushRequested; + ((INavigationPageController)Element).PopRequested += OnPopRequested; Element.InternalChildren.CollectionChanged += OnChildrenChanged; if (!string.IsNullOrEmpty(Element.AutomationId)) @@ -391,8 +392,8 @@ namespace Xamarin.Forms.Platform.WinRT void PushExistingNavigationStack() { - for (int i = Element.StackCopy.Count - 1; i >= 0; i--) - SetPage(Element.StackCopy.ElementAt(i), false, false); + for (int i = ((INavigationPageController)Element).StackCopy.Count - 1; i >= 0; i--) + SetPage(((INavigationPageController)Element).StackCopy.ElementAt(i), false, false); } void SetPage(Page page, bool isAnimated, bool isPopping) diff --git a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs index da3a0aa2..5fb69c0d 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs @@ -6,6 +6,7 @@ using System.Drawing; using System.Linq; using System.Threading; using System.Threading.Tasks; +using Xamarin.Forms.Internals; #if __UNIFIED__ using UIKit; using CoreGraphics; @@ -217,18 +218,20 @@ namespace Xamarin.Forms.Platform.iOS "NavigationPage must have a root Page before being used. Either call PushAsync with a valid Page, or pass a Page to the constructor before usage."); } - navPage.PushRequested += OnPushRequested; - navPage.PopRequested += OnPopRequested; - navPage.PopToRootRequested += OnPopToRootRequested; - navPage.RemovePageRequested += OnRemovedPageRequested; - navPage.InsertPageBeforeRequested += OnInsertPageBeforeRequested; + var navController = ((INavigationPageController)navPage); + + navController.PushRequested += OnPushRequested; + navController.PopRequested += OnPopRequested; + navController.PopToRootRequested += OnPopToRootRequested; + navController.RemovePageRequested += OnRemovedPageRequested; + navController.InsertPageBeforeRequested += OnInsertPageBeforeRequested; UpdateTint(); UpdateBarBackgroundColor(); UpdateBarTextColor(); // If there is already stuff on the stack we need to push it - navPage.StackCopy.Reverse().ForEach(async p => await PushPageAsync(p, false)); + ((INavigationPageController)navPage).StackCopy.Reverse().ForEach(async p => await PushPageAsync(p, false)); _tracker = new VisualElementTracker(this); @@ -260,11 +263,13 @@ namespace Xamarin.Forms.Platform.iOS var navPage = (NavigationPage)Element; navPage.PropertyChanged -= HandlePropertyChanged; - navPage.PushRequested -= OnPushRequested; - navPage.PopRequested -= OnPopRequested; - navPage.PopToRootRequested -= OnPopToRootRequested; - navPage.RemovePageRequested -= OnRemovedPageRequested; - navPage.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; + + var navController = ((INavigationPageController)navPage); + navController.PushRequested -= OnPushRequested; + navController.PopRequested -= OnPopRequested; + navController.PopToRootRequested -= OnPopToRootRequested; + navController.RemovePageRequested -= OnRemovedPageRequested; + navController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; } base.Dispose(disposing); @@ -542,7 +547,7 @@ namespace Xamarin.Forms.Platform.iOS for (var i = 0; i < removed; i++) { // lets just pop these suckers off, do not await, the true is there to make this fast - await ((NavigationPage)Element).PopAsyncInner(animated, true); + await ((INavigationPageController)Element).PopAsyncInner(animated, true); } // because we skip the normal pop process we need to dispose ourselves controller.Dispose(); @@ -625,7 +630,7 @@ namespace Xamarin.Forms.Platform.iOS void UpdateLeftBarButtonItem(ParentingViewController containerController) { var currentChild = containerController.Child; - var firstPage = ((NavigationPage)Element).StackCopy.LastOrDefault(); + var firstPage = ((INavigationPageController)Element).StackCopy.LastOrDefault(); if ((currentChild != firstPage && NavigationPage.GetHasBackButton(currentChild)) || _parentMasterDetailPage == null) return; diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/NavigationRequestedEventArgs.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/NavigationRequestedEventArgs.xml new file mode 100644 index 00000000..72f27d4b --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/NavigationRequestedEventArgs.xml @@ -0,0 +1,122 @@ +<Type Name="NavigationRequestedEventArgs" FullName="Xamarin.Forms.Internals.NavigationRequestedEventArgs"> + <TypeSignature Language="C#" Value="public class NavigationRequestedEventArgs : Xamarin.Forms.NavigationEventArgs" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit NavigationRequestedEventArgs extends Xamarin.Forms.NavigationEventArgs" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>Xamarin.Forms.NavigationEventArgs</BaseTypeName> + </Base> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NavigationRequestedEventArgs (Xamarin.Forms.Page page, bool animated, bool realize = true);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class Xamarin.Forms.Page page, bool animated, bool realize) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="page" Type="Xamarin.Forms.Page" /> + <Parameter Name="animated" Type="System.Boolean" /> + <Parameter Name="realize" Type="System.Boolean" /> + </Parameters> + <Docs> + <param name="page">To be added.</param> + <param name="animated">To be added.</param> + <param name="realize">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NavigationRequestedEventArgs (Xamarin.Forms.Page page, Xamarin.Forms.Page before, bool animated);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class Xamarin.Forms.Page page, class Xamarin.Forms.Page before, bool animated) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="page" Type="Xamarin.Forms.Page" /> + <Parameter Name="before" Type="Xamarin.Forms.Page" /> + <Parameter Name="animated" Type="System.Boolean" /> + </Parameters> + <Docs> + <param name="page">To be added.</param> + <param name="before">To be added.</param> + <param name="animated">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Animated"> + <MemberSignature Language="C#" Value="public bool Animated { get; set; }" /> + <MemberSignature Language="ILAsm" Value=".property instance bool Animated" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="BeforePage"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.Page BeforePage { get; set; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.Page BeforePage" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.Page</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Realize"> + <MemberSignature Language="C#" Value="public bool Realize { get; set; }" /> + <MemberSignature Language="ILAsm" Value=".property instance bool Realize" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Task"> + <MemberSignature Language="C#" Value="public System.Threading.Tasks.Task<bool> Task { get; set; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class System.Threading.Tasks.Task`1<bool> Task" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Threading.Tasks.Task<System.Boolean></ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/INavigationPageController.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/INavigationPageController.xml new file mode 100644 index 00000000..f776f98c --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/INavigationPageController.xml @@ -0,0 +1,144 @@ +<Type Name="INavigationPageController" FullName="Xamarin.Forms.INavigationPageController"> + <TypeSignature Language="C#" Value="public interface INavigationPageController" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract INavigationPageController" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="InsertPageBeforeRequested"> + <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.NavigationRequestedEventArgs> InsertPageBeforeRequested;" /> + <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.NavigationRequestedEventArgs> InsertPageBeforeRequested" /> + <MemberType>Event</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.EventHandler<Xamarin.Forms.NavigationRequestedEventArgs></ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="PopAsyncInner"> + <MemberSignature Language="C#" Value="public System.Threading.Tasks.Task<Xamarin.Forms.Page> PopAsyncInner (bool animated, bool fast = false);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Threading.Tasks.Task`1<class Xamarin.Forms.Page> PopAsyncInner(bool animated, bool fast) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Threading.Tasks.Task<Xamarin.Forms.Page></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="animated" Type="System.Boolean" /> + <Parameter Name="fast" Type="System.Boolean" /> + </Parameters> + <Docs> + <param name="animated">To be added.</param> + <param name="fast">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="PopRequested"> + <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.NavigationRequestedEventArgs> PopRequested;" /> + <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.NavigationRequestedEventArgs> PopRequested" /> + <MemberType>Event</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.EventHandler<Xamarin.Forms.NavigationRequestedEventArgs></ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="PopToRootRequested"> + <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.NavigationRequestedEventArgs> PopToRootRequested;" /> + <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.NavigationRequestedEventArgs> PopToRootRequested" /> + <MemberType>Event</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.EventHandler<Xamarin.Forms.NavigationRequestedEventArgs></ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="PushRequested"> + <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.NavigationRequestedEventArgs> PushRequested;" /> + <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.NavigationRequestedEventArgs> PushRequested" /> + <MemberType>Event</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.EventHandler<Xamarin.Forms.NavigationRequestedEventArgs></ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="RemovePageRequested"> + <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.NavigationRequestedEventArgs> RemovePageRequested;" /> + <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.NavigationRequestedEventArgs> RemovePageRequested" /> + <MemberType>Event</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.EventHandler<Xamarin.Forms.NavigationRequestedEventArgs></ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="StackCopy"> + <MemberSignature Language="C#" Value="public System.Collections.Generic.Stack<Xamarin.Forms.Page> StackCopy { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.Stack`1<class Xamarin.Forms.Page> StackCopy" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Collections.Generic.Stack<Xamarin.Forms.Page></ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="StackDepth"> + <MemberSignature Language="C#" Value="public int StackDepth { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance int32 StackDepth" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Int32</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/NavigationPage.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/NavigationPage.xml index 1004ed1e..f58b6d8f 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/NavigationPage.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/NavigationPage.xml @@ -1,6 +1,6 @@ <Type Name="NavigationPage" FullName="Xamarin.Forms.NavigationPage"> - <TypeSignature Language="C#" Value="public class NavigationPage : Xamarin.Forms.Page, Xamarin.Forms.IPageContainer<Xamarin.Forms.Page>" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit NavigationPage extends Xamarin.Forms.Page implements class Xamarin.Forms.IPageContainer`1<class Xamarin.Forms.Page>" /> + <TypeSignature Language="C#" Value="public class NavigationPage : Xamarin.Forms.Page, Xamarin.Forms.INavigationPageController, Xamarin.Forms.IPageContainer<Xamarin.Forms.Page>" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit NavigationPage extends Xamarin.Forms.Page implements class Xamarin.Forms.INavigationPageController, class Xamarin.Forms.IPageContainer`1<class Xamarin.Forms.Page>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -16,6 +16,9 @@ </Base> <Interfaces> <Interface> + <InterfaceName>Xamarin.Forms.INavigationPageController</InterfaceName> + </Interface> + <Interface> <InterfaceName>Xamarin.Forms.IPageContainer<Xamarin.Forms.Page></InterfaceName> </Interface> </Interfaces> @@ -419,7 +422,7 @@ <AttributeName>System.Diagnostics.DebuggerStepThrough</AttributeName> </Attribute> <Attribute> - <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<PopAsync>d__68))</AttributeName> + <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<PopAsync>d__36))</AttributeName> </Attribute> </Attributes> <ReturnValue> @@ -515,7 +518,7 @@ <AttributeName>System.Diagnostics.DebuggerStepThrough</AttributeName> </Attribute> <Attribute> - <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<PopToRootAsync>d__71))</AttributeName> + <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<PopToRootAsync>d__44))</AttributeName> </Attribute> </Attributes> <ReturnValue> @@ -572,7 +575,7 @@ <AttributeName>System.Diagnostics.DebuggerStepThrough</AttributeName> </Attribute> <Attribute> - <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<PushAsync>d__65))</AttributeName> + <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<PushAsync>d__46))</AttributeName> </Attribute> </Attributes> <ReturnValue> @@ -811,5 +814,67 @@ public class MyPage : NavigationPage <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="Xamarin.Forms.INavigationPageController.PopAsyncInner"> + <MemberSignature Language="C#" Value="System.Threading.Tasks.Task<Xamarin.Forms.Page> INavigationPageController.PopAsyncInner (bool animated, bool fast);" /> + <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Threading.Tasks.Task`1<class Xamarin.Forms.Page> Xamarin.Forms.INavigationPageController.PopAsyncInner(bool animated, bool fast) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Attributes> + <Attribute> + <AttributeName>System.Diagnostics.DebuggerStepThrough</AttributeName> + </Attribute> + <Attribute> + <AttributeName>System.Runtime.CompilerServices.AsyncStateMachine(typeof(Xamarin.Forms.NavigationPage/<Xamarin-Forms-INavigationPageController-PopAsyncInner>d__61))</AttributeName> + </Attribute> + </Attributes> + <ReturnValue> + <ReturnType>System.Threading.Tasks.Task<Xamarin.Forms.Page></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="animated" Type="System.Boolean" /> + <Parameter Name="fast" Type="System.Boolean" /> + </Parameters> + <Docs> + <param name="animated">To be added.</param> + <param name="fast">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Xamarin.Forms.INavigationPageController.StackCopy"> + <MemberSignature Language="C#" Value="System.Collections.Generic.Stack<Xamarin.Forms.Page> Xamarin.Forms.INavigationPageController.StackCopy { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.Stack`1<class Xamarin.Forms.Page> Xamarin.Forms.INavigationPageController.StackCopy" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Collections.Generic.Stack<Xamarin.Forms.Page></ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Xamarin.Forms.INavigationPageController.StackDepth"> + <MemberSignature Language="C#" Value="int Xamarin.Forms.INavigationPageController.StackDepth { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance int32 Xamarin.Forms.INavigationPageController.StackDepth" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Int32</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> </Members> </Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/NavigationRequestedEventArgs.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/NavigationRequestedEventArgs.xml new file mode 100644 index 00000000..550f755d --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/NavigationRequestedEventArgs.xml @@ -0,0 +1,122 @@ +<Type Name="NavigationRequestedEventArgs" FullName="Xamarin.Forms.NavigationRequestedEventArgs"> + <TypeSignature Language="C#" Value="public class NavigationRequestedEventArgs : Xamarin.Forms.NavigationEventArgs" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit NavigationRequestedEventArgs extends Xamarin.Forms.NavigationEventArgs" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>Xamarin.Forms.NavigationEventArgs</BaseTypeName> + </Base> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NavigationRequestedEventArgs (Xamarin.Forms.Page page, bool animated, bool realize = true);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class Xamarin.Forms.Page page, bool animated, bool realize) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="page" Type="Xamarin.Forms.Page" /> + <Parameter Name="animated" Type="System.Boolean" /> + <Parameter Name="realize" Type="System.Boolean" /> + </Parameters> + <Docs> + <param name="page">To be added.</param> + <param name="animated">To be added.</param> + <param name="realize">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NavigationRequestedEventArgs (Xamarin.Forms.Page page, Xamarin.Forms.Page before, bool animated);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class Xamarin.Forms.Page page, class Xamarin.Forms.Page before, bool animated) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="page" Type="Xamarin.Forms.Page" /> + <Parameter Name="before" Type="Xamarin.Forms.Page" /> + <Parameter Name="animated" Type="System.Boolean" /> + </Parameters> + <Docs> + <param name="page">To be added.</param> + <param name="before">To be added.</param> + <param name="animated">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Animated"> + <MemberSignature Language="C#" Value="public bool Animated { get; set; }" /> + <MemberSignature Language="ILAsm" Value=".property instance bool Animated" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="BeforePage"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.Page BeforePage { get; set; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.Page BeforePage" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.Page</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Realize"> + <MemberSignature Language="C#" Value="public bool Realize { get; set; }" /> + <MemberSignature Language="ILAsm" Value=".property instance bool Realize" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Task"> + <MemberSignature Language="C#" Value="public System.Threading.Tasks.Task<bool> Task { get; set; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class System.Threading.Tasks.Task`1<bool> Task" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Threading.Tasks.Task<System.Boolean></ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> |