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();
            }
        }
Example #2
0
		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();
		}