public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            VisualElement visualElement = value as VisualElement;

            if (visualElement != null)
            {
                var frameworkElement = Platform.GetOrCreateRenderer(visualElement)?.GetNativeElement();

                if (frameworkElement != null)
                {
                    frameworkElement.Loaded += (sender, args) =>
                    {
                        visualElement.Layout(new Rectangle(0, 0, frameworkElement.ActualWidth, frameworkElement.ActualHeight));
                    };

                    frameworkElement.SizeChanged += (sender, args) =>
                    {
                        visualElement.Layout(new Rectangle(0, 0, frameworkElement.ActualWidth, frameworkElement.ActualHeight));
                    };

                    return(frameworkElement);
                }
            }
            return(null);
        }
Beispiel #2
0
        void UpdateContent()
        {
            if (_currentView != null)
            {
                _currentView.Cleanup();                 // cleanup old view
            }

            _currentView  = Element.Content;
            Control.Child = _currentView != null?Platform.GetOrCreateRenderer(_currentView).GetNativeElement() : null;
        }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var visualElement = value as VisualElement;

            if (visualElement == null)
            {
                return(null);
            }

            var frameworkElement = Platform.GetOrCreateRenderer(visualElement)?.GetNativeElement();

            return(frameworkElement);
        }
Beispiel #4
0
        void UpdateContent()
        {
            ContentPage page = Element as ContentPage;

            if (page != null)
            {
                if (_currentView != null)
                {
                    _currentView.Cleanup();                     // cleanup old view
                }

                _currentView    = page.Content;
                Control.Content = _currentView != null?Platform.GetOrCreateRenderer(_currentView).GetNativeElement() : null;
            }
        }
Beispiel #5
0
        private object CreateOrResizeContent(FrameworkElement parent, VisualElement visualElement)
        {
            var renderer = Platform.GetOrCreateRenderer(visualElement);

            //if (Debugger.IsAttached)
            //	Console.WriteLine("Page type : " + visualElement.GetType() + " (" + (visualElement as Page).Title + ") -- Parent type : " + visualElement.Parent.GetType() + " -- " + parent.ActualHeight + "H*" + parent.ActualWidth + "W");

            visualElement.Layout(new Rectangle(0, 0, parent.ActualWidth, parent.ActualHeight));

            IPageController pageController = visualElement.RealParent as IPageController;

            if (pageController != null)
            {
                pageController.ContainerArea = new Rectangle(0, 0, parent.ActualWidth, parent.ActualHeight);
            }

            return(renderer.GetNativeElement());
        }
        void LoadContent()
        {
            if (_currentView != null)
            {
                _currentView.Cleanup();                 // cleanup old view
            }

            _currentView = Element.Content;

            if (_currentView != null)
            {
                /*
                 * Wrap Content in a DockPanel : The goal is to reduce ce Measure Cycle on scolling
                 */
                DockPanel dockPanel = new DockPanel();
                dockPanel.Children.Add(Platform.GetOrCreateRenderer(_currentView).GetNativeElement());
                Control.Content = dockPanel;
            }
            else
            {
                Control.Content = null;
            }
            UpdateMargins();
        }
Beispiel #7
0
        private object CreateOrResizeContent(FrameworkElement parent, VisualElement visualElement)
        {
            var renderer = Platform.GetOrCreateRenderer(visualElement);

            //if (Debugger.IsAttached)
            //	Console.WriteLine("Page type : " + visualElement.GetType() + " (" + (visualElement as Page).Title + ") -- Parent type : " + visualElement.Parent.GetType() + " -- " + parent.ActualHeight + "H*" + parent.ActualWidth + "W");

            var actualRect = new Rectangle(0, 0, parent.ActualWidth, parent.ActualHeight);

            visualElement.Layout(actualRect);

            // ControlTemplate adds an additional layer through which to send sizing changes.
            var contentPage = visualElement as ContentPage;

            if (contentPage?.ControlTemplate != null)
            {
                contentPage.Content?.Layout(actualRect);
            }
            else
            {
                var contentView = visualElement as ContentView;
                if (contentView?.ControlTemplate != null)
                {
                    contentView.Content?.Layout(actualRect);
                }
            }

            IPageController pageController = visualElement.RealParent as IPageController;

            if (pageController != null)
            {
                pageController.ContainerArea = actualRect;
            }

            return(renderer.GetNativeElement());
        }