private void SetCurrentPage(Page page, bool usePreviousPage = false) { page.Platform = this; if (page.GetRenderer() == null) { Renderer = RendererFactory.GetRenderer(page); page.SetRenderer(Renderer); } page.Layout(new Rectangle(0, 0, _renderer.ActualWidth, _renderer.ActualHeight)); if (usePreviousPage) { Renderer = page.GetRenderer(); UpdateAppBar(); } _renderer.Children.Clear(); _renderer.Children.Add((UIElement)Renderer); if (NavigationService.Current.NavigationModel.Roots.Last() != null) { _tracker.Target = NavigationService.Current.NavigationModel.Roots.Last(); } }
async void SetCurrent(Page newPage, bool animated, bool popping = false, Action completedCallback = null) { if (newPage == _currentPage) return; newPage.Platform = this; if (_currentPage != null) { Page previousPage = _currentPage; IVisualElementRenderer previousRenderer = GetRenderer(previousPage); _container.Children.Remove(previousRenderer.ContainerElement); if (popping) previousPage.Cleanup(); } newPage.Layout(new Rectangle(0, 0, _page.ActualWidth, _page.ActualHeight)); IVisualElementRenderer pageRenderer = newPage.GetOrCreateRenderer(); _container.Children.Add(pageRenderer.ContainerElement); pageRenderer.ContainerElement.Width = _container.ActualWidth; pageRenderer.ContainerElement.Height = _container.ActualHeight; if (completedCallback != null) completedCallback(); _currentPage = newPage; UpdateToolbarTracker(); UpdateToolbarTitle(newPage); await UpdateToolbarItems(); }