UIViewController CreateViewController(int index)
        {
            Xamarin.Forms.View formsView      = null;
            object             bindingContext = null;

            if (Element.ItemsSource != null)
            {
                bindingContext = Element.ItemsSource.Cast <object> ().ElementAt(index);
            }

            var selector = Element.ItemTemplate as DataTemplateSelector;

            if (selector != null)
            {
                formsView = (Xamarin.Forms.View)selector.SelectTemplate(bindingContext, Element).CreateContent();
            }
            else
            {
                formsView = (Xamarin.Forms.View)Element.ItemTemplate.CreateContent();
            }

            formsView.BindingContext = bindingContext;

            // UIScreen.MainScreen.Bounds.Width, UIScreen.MainScreen.Bounds.Height
            var rect            = new CGRect(Element.X, Element.Y, ElementWidth, ElementHeight);
            var nativeConverted = FormsViewToNativeiOS.ConvertFormsToNative(formsView, rect);

            var viewController = new ViewContainer();

            viewController.Tag  = index;
            viewController.View = nativeConverted;

            return(viewController);
        }
Beispiel #2
0
        UIViewController CreateViewController(int index)
        {
            View formsView = null;

            object bindingContext = null;

            if (Source != null && Source?.Count > 0)
            {
                bindingContext = Source.Cast <object>().ElementAt(index);
            }

            var dt = bindingContext as DataTemplate;

            // Support for List<DataTemplate> as ItemsSource
            if (dt != null)
            {
                formsView = (View)dt.CreateContent();
            }
            else
            {
                var selector = Element.ItemTemplate as DataTemplateSelector;
                if (selector != null)
                {
                    formsView = (View)selector.SelectTemplate(bindingContext, Element).CreateContent();
                }
                else
                {
                    formsView = (View)Element.ItemTemplate.CreateContent();
                }

                formsView.BindingContext = bindingContext;
            }

            // HeightRequest fix
            formsView.Parent = this.Element;

            // UIScreen.MainScreen.Bounds.Width, UIScreen.MainScreen.Bounds.Height
            var rect            = new CGRect(Element.X, Element.Y, ElementWidth, ElementHeight);
            var nativeConverted = FormsViewToNativeiOS.ConvertFormsToNative(formsView, rect);

            var viewController = new ViewContainer();

            viewController.Tag  = index;
            viewController.View = nativeConverted;

            return(viewController);
        }