/// <summary> /// Updates the master detail containers. /// </summary> void UpdateMasterDetailContainers() { //((MasterDetailPage)Element).Master.PropertyChanged -= HandleMasterPropertyChanged; EmptyContainers(); if (CurrentPlatform.GetRenderer(((MasterDetailPage)Element).Master) == null) { CurrentPlatform.SetRenderer(((MasterDetailPage)Element).Master, CurrentPlatform.CreateRenderer(((MasterDetailPage)Element).Master)); } if (CurrentPlatform.GetRenderer(((MasterDetailPage)Element).Detail) == null) { CurrentPlatform.SetRenderer(((MasterDetailPage)Element).Detail, CurrentPlatform.CreateRenderer(((MasterDetailPage)Element).Detail)); } var masterRenderer = CurrentPlatform.GetRenderer(((MasterDetailPage)Element).Master); var detailRenderer = CurrentPlatform.GetRenderer(((MasterDetailPage)Element).Detail); //((MasterDetailPage)Element).Master.PropertyChanged += HandleMasterPropertyChanged; this.MenuViewController.View.AddSubview(masterRenderer.NativeView); this.MenuViewController.AddChildViewController(masterRenderer.ViewController); this.RootViewController.View.AddSubview(detailRenderer.NativeView); this.RootViewController.AddChildViewController(detailRenderer.ViewController); SetNeedsStatusBarAppearanceUpdate(); }
public static IVisualElementRenderer GetOrCreateRenderer(this VisualElement bindable) { var renderer = XFPlatform.GetRenderer(bindable); if (renderer == null) { renderer = XFPlatform.CreateRenderer(bindable); XFPlatform.SetRenderer(bindable, renderer); } return(renderer); }
void SetupPage(Page page, int index) { IVisualElementRenderer renderer = Platform.GetRenderer(page); if (renderer == null) { renderer = Platform.CreateRenderer(page); Platform.SetRenderer(page, renderer); } page.PropertyChanged -= OnPagePropertyChanged; page.PropertyChanged += OnPagePropertyChanged; }
internal UIContainerCell(string cellId, View view, Shell shell, object context) : base(UITableViewCellStyle.Default, cellId) { View = view; View.MeasureInvalidated += MeasureInvalidated; SelectionStyle = UITableViewCellSelectionStyle.None; _renderer = Platform.GetRenderer(view); if (_renderer == null) { _renderer = Platform.CreateRenderer(view); Platform.SetRenderer(view, _renderer); } ContentView.AddSubview(_renderer.NativeView); _renderer.NativeView.ClipsToBounds = true; ContentView.ClipsToBounds = true; BindingContext = context; if (shell != null) { shell.AddLogicalChild(View); } }
void UpdateMasterDetailContainers() { ((MasterDetailPage)Element).Master.PropertyChanged -= HandleMasterPropertyChanged; EmptyContainers(); if (Platform.GetRenderer(((MasterDetailPage)Element).Master) == null) { Platform.SetRenderer(((MasterDetailPage)Element).Master, Platform.CreateRenderer(((MasterDetailPage)Element).Master)); } if (Platform.GetRenderer(((MasterDetailPage)Element).Detail) == null) { Platform.SetRenderer(((MasterDetailPage)Element).Detail, Platform.CreateRenderer(((MasterDetailPage)Element).Detail)); } var masterRenderer = Platform.GetRenderer(((MasterDetailPage)Element).Master); var detailRenderer = Platform.GetRenderer(((MasterDetailPage)Element).Detail); ((MasterDetailPage)Element).Master.PropertyChanged += HandleMasterPropertyChanged; UIView masterView = masterRenderer.NativeView; _masterController.View.AddSubview(masterView); _masterController.AddChildViewController(masterRenderer.ViewController); UIView detailView = detailRenderer.NativeView; _detailController.View.AddSubview(detailView); _detailController.AddChildViewController(detailRenderer.ViewController); SetNeedsStatusBarAppearanceUpdate(); if (Forms.RespondsToSetNeedsUpdateOfHomeIndicatorAutoHidden) { SetNeedsUpdateOfHomeIndicatorAutoHidden(); } }
public static IVisualElementRenderer GetRenderer(VisualElement view) { return(Platform.CreateRenderer(view)); }
public void SetCustomContent(View content) { if (content == Content) { return; } removeScolledEvent?.Invoke(); removeScolledEvent = null; if (Content != null) { var oldRenderer = Platform.GetRenderer(Content); var oldContentView = ContentView; var oldContent = Content; Content = null; ContentView = null; oldContent.ClearValue(Platform.RendererProperty); oldContentView?.RemoveFromSuperview(); oldRenderer?.Dispose(); } // If the user hasn't defined custom content then only the ContentView is set else if (ContentView != null) { var oldContentView = ContentView; ContentView = null; oldContentView.RemoveFromSuperview(); } Content = content; if (Content != null) { var renderer = Platform.CreateRenderer(Content); ContentView = renderer.NativeView; Platform.SetRenderer(Content, renderer); ContentView.ClipsToBounds = true; // not sure if there's a more efficient way to do this // I can test the native control to see if it inherits from UIScrollView // But the CollectionViewRenderer doesn't inherit from UIScrollView if (Content is ScrollView sv) { sv.Scrolled += ScrollViewScrolled; removeScolledEvent = () => sv.Scrolled -= ScrollViewScrolled; void ScrollViewScrolled(object sender, ScrolledEventArgs e) => OnScrolled((nfloat)sv.ScrollY); } else if (Content is CollectionView cv) { cv.Scrolled += CollectionViewScrolled; removeScolledEvent = () => cv.Scrolled -= CollectionViewScrolled; void CollectionViewScrolled(object sender, ItemsViewScrolledEventArgs e) => OnScrolled((nfloat)e.VerticalOffset); } else if (Content is ListView lv) { lv.Scrolled += ListViewScrolled; removeScolledEvent = () => lv.Scrolled -= ListViewScrolled; void ListViewScrolled(object sender, ScrolledEventArgs e) => OnScrolled((nfloat)e.ScrollY); } } }