void LoadDetail() { if (_detailRenderer != null) { Children.Remove(_detailRenderer.ContainerElement); } Page detail = Element.Detail; if (Platform.GetRenderer(detail) == null) { Platform.SetRenderer(detail, Platform.CreateRenderer(detail)); } _detailRenderer = Platform.GetRenderer(detail); Children.Clear(); if (_detailRenderer != null) { Children.Add(_detailRenderer.ContainerElement); } }
void LoadMaster() { if (_masterRenderer != null && _popup != null) { _popup.Child = null; } Page master = Element.Master; if (Platform.GetRenderer(master) == null) { Platform.SetRenderer(master, Platform.CreateRenderer(master)); } _masterRenderer = Platform.GetRenderer(master); var control = _masterRenderer as Panel; if (control != null && master.BackgroundColor == Color.Default) { control.Background = Color.Black.ToBrush(); } }
public WrapperControl(View view) { _view = view; _view.MeasureInvalidated += (sender, args) => InvalidateMeasure(); IVisualElementRenderer visualElementRenderer = Platform.CreateRenderer(view); Platform.SetRenderer(view, visualElementRenderer); Content = visualElementRenderer.ContainerElement; // make sure we re-measure once the template is applied var frameworkElement = visualElementRenderer.ContainerElement as FrameworkElement; if (frameworkElement != null) { frameworkElement.Loaded += (sender, args) => { ((IVisualElementController)_view).InvalidateMeasure(InvalidationTrigger.MeasureChanged); InvalidateMeasure(); }; } }
void UpdateRootPage(IReadOnlyList <Page> stack) { Page first = stack.FirstOrDefault(); if (first == _currentRoot) { return; } if (Children.Count > 0) { var renderer = Children[0] as IVisualElementRenderer; if (renderer != null) { Children.RemoveAt(0); var page = renderer.Element as IPageController; if (page != null) { page.IgnoresContainerArea = false; } if (!stack.Contains(renderer.Element)) { Platform.SetRenderer(renderer.Element, null); } } } _currentRoot = first; if (first == null) { return; } ((IPageController)first).IgnoresContainerArea = true; IVisualElementRenderer firstRenderer = Platform.GetRenderer(first); if (firstRenderer == null) { firstRenderer = Platform.CreateRenderer(first); Platform.SetRenderer(first, firstRenderer); } var uiElement = (UIElement)firstRenderer; var platform = Element.Platform as Platform; Canvas canvas = platform?.GetCanvas(); //We could be swapping the visible page, //so let's make sure we remove it if (canvas.Children.Contains(uiElement)) { canvas.Children.Remove(uiElement); } Children.Add(uiElement); // we removed the previous root page, and the new root page is the one being presented // at this time there's only 1 page now on the stack (the navigationpage with root) // we need to update the platform to set this root page as the visible again bool updateRoot = Element.CurrentPage == first && _isRemoving; if (updateRoot) { platform.SetCurrent(Element, false); } }
public static void SetRenderer(this VisualElement self, IVisualElementRenderer renderer) { Platform.SetRenderer(self, renderer); }