void PopToRootRequest(object sender, Internals.NavigationRequestedEventArgs e) { CurrentNative?.Hide(); var root = _pageToNative[_rootPage]; foreach (var pair in _pageToNative) { if (pair.Value != root) { pair.Value.Unrealize(); } } _pageToNative.Clear(); _nativeToPage.Clear(); _navigationStack.Clear(); _navigationStack.AddLast(root); _pageToNative[_rootPage] = root; _nativeToPage[root] = _rootPage; UpdateLayout(); UpdateTaskCompletionSource(e, true); }
void OnNavigationRequested(object sender, Internals.NavigationRequestedEventArgs e) { if (e.RequestType == Internals.NavigationRequestType.Push) { PushRequest(sender, e); } else if (e.RequestType == Internals.NavigationRequestType.Insert) { InsertRequest(sender, e); } else if (e.RequestType == Internals.NavigationRequestType.Pop) { PopRequest(sender, e); } else if (e.RequestType == Internals.NavigationRequestType.PopToRoot) { PopToRootRequest(sender, e); } else if (e.RequestType == Internals.NavigationRequestType.Remove) { RemoveRequest(sender, e); } UpdateHasBackButton(); }
void Element_PopToRootRequested(object sender, Internals.NavigationRequestedEventArgs e) { this.Control?.PopToRoot(e.Animated); }
void Element_RemovePageRequested(object sender, Internals.NavigationRequestedEventArgs e) { this.Control?.RemovePage(e.Page); }
void Element_InsertPageBeforeRequested(object sender, Internals.NavigationRequestedEventArgs e) { this.Control?.InsertPageBefore(e.Page, e.BeforePage); }
void Element_PushRequested(object sender, Internals.NavigationRequestedEventArgs e) { this.Control?.Push(e.Page, e.Animated); }
void PopToRootRequest(object sender, Internals.NavigationRequestedEventArgs request) { _viewStack.PopToRoot(); request.Task = Task.FromResult(true); }