void UpdateMaster() { ClearMaster(); FrameworkElement element = null; _master = Element.Master; if (_master != null) { _master.PropertyChanged += OnMasterPropertyChanged; IVisualElementRenderer renderer = _master.GetOrCreateRenderer(); element = renderer.ContainerElement; } Control.Master = element; Control.MasterTitle = _master?.Title; }
void UpdateDetail() { ClearDetail(); FrameworkElement element = null; _detail = Element.Detail; if (_detail != null) { _detail.PropertyChanged += OnDetailPropertyChanged; IVisualElementRenderer renderer = _detail.GetOrCreateRenderer(); element = renderer.ContainerElement; } Control.Detail = element; UpdateDetailTitle(); }
void SetMaster(Page masterPage) { if (_masterRenderer != null) { FrameworkElement native = _masterRenderer.ContainerElement; _container.MasterContent = null; _masterRenderer = null; } if (masterPage == null) return; _masterRenderer = masterPage.GetOrCreateRenderer(); _container.MasterContent = _masterRenderer.ContainerElement; }
void SetDetail(Page detailPage) { ((ITitleProvider)this).ShowTitle = detailPage is NavigationPage; if (_detailRenderer != null) { FrameworkElement native = _detailRenderer.ContainerElement; _container.DetailContent = null; _detailRenderer = null; } if (detailPage == null) return; _detailRenderer = detailPage.GetOrCreateRenderer(); _container.DetailContent = _detailRenderer.ContainerElement; UpdateTitle(); }
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(); }
void SetPage(Page page, bool isAnimated, bool isPopping) { if (_currentPage != null) { if (isPopping) _currentPage.Cleanup(); _container.Content = null; _currentPage.PropertyChanged -= OnCurrentPagePropertyChanged; } _previousPage = _currentPage; _currentPage = page; if (page == null) return; UpdateBackButton(); UpdateBackButtonTitle(); page.PropertyChanged += OnCurrentPagePropertyChanged; IVisualElementRenderer renderer = page.GetOrCreateRenderer(); UpdateNavigationBarVisible(); UpdateTitleOnParents(); if (isAnimated && _transition == null) { _transition = new ContentThemeTransition(); _container.ContentTransitions = new TransitionCollection(); } if (!isAnimated && _transition != null) _container.ContentTransitions.Remove(_transition); else if (isAnimated && _container.ContentTransitions.Count == 0) _container.ContentTransitions.Add(_transition); _container.Content = renderer.ContainerElement; _container.DataContext = page; }