示例#1
0
        /// <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;
        }
示例#4
0
        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);
            }
        }
示例#5
0
        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();
            }
        }
示例#6
0
 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);
                }
            }
        }