private static void OnTypePropertyChanged(BindableObject bindable, object oldValue, object newValue)
        {
            ImageSource color = null;

            switch ((String)newValue)
            {
            case "New":
                color = ImageSource.FromResource("SampleBrowser.Icons.New.png");
                break;

            case "Preview":
                color = ImageSource.FromResource("SampleBrowser.Icons.Preview.png");
                break;

            case "Updated":
                color = ImageSource.FromResource("SampleBrowser.Icons.Updated.png");
                break;
            }
            var icon = new Image
            {
                Source            = color,
                HeightRequest     = DeviceExt.OnPlatform(55, 20, 30),
                VerticalOptions   = LayoutOptions.Center,
                HorizontalOptions = LayoutOptions.End,
                WidthRequest      = DeviceExt.OnPlatform(70, 100, 100),
                Aspect            = Aspect.AspectFit,
            };

            ((ControlListCellMobile)bindable).rootLayout.Children.Add(icon, 2, 0);
        }
        protected override void OnSizeAllocated(double width, double height)
        {
            if (Device.Idiom == TargetIdiom.Tablet)
            {
                int maxColumnCount;
                int maxRowCount;
                if (width > height)
                {
                    //Landscape
                    maxColumnCount = DeviceExt.OnPlatform(5, 6, 0);
                    maxRowCount    = DeviceExt.OnPlatform(4, 3, 0);
                    if (Device.OS == TargetPlatform.Android)
                    {
                        rootGrid.HeightRequest = 800;
                    }
                }
                else
                {
                    //Portrait
                    maxColumnCount = 5;
                    maxRowCount    = 5;
                    if (Device.OS == TargetPlatform.Android)
                    {
                        rootGrid.HeightRequest = 1200;
                    }
                }

                var currentColumn = 0;
                var currentRow    = 0;

                Grid.SetRow(dummyContent, maxRowCount - 1);
                Grid.SetColumn(dummyContent, maxColumnCount - 1);

                foreach (var child in rootGrid.Children.Where(child => !(child is Label)))
                {
                    Grid.SetColumn(child, currentColumn);
                    Grid.SetRow(child, currentRow);

                    currentColumn++;
                    if (currentColumn != maxColumnCount)
                    {
                        continue;
                    }
                    currentColumn = 0;
                    currentRow++;
                }
            }

            base.OnSizeAllocated(width, height);
        }
        public SampleListCell()
        {
            this.SetBinding(TypeProperty, "SampleType");

            var sampleName = new LabelExt {
                VerticalOptions = LayoutOptions.Center
            };

            sampleName.SetBinding(Label.TextProperty, "Title");
            sampleName.VerticalOptions = LayoutOptions.Center;
            //if (Device.OS == TargetPlatform.Windows && Device.Idiom == TargetIdiom.Phone)
            //    sampleName.HorizontalOptions = LayoutOptions.FillAndExpand;

            if (Device.Idiom == TargetIdiom.Desktop || Device.Idiom == TargetIdiom.Tablet)
            {
                sampleName.WidthRequest = 210;
            }
            sampleName.FontSize = Device.Idiom == TargetIdiom.Tablet
                ? DeviceExt.OnPlatform(15, 15, 25)
                : DeviceExt.OnPlatform(13, 13, 25);

            sampleName.VerticalOptions = LayoutOptions.Center;
            if ((Device.OS == TargetPlatform.Windows && Device.Idiom == TargetIdiom.Phone) || Device.OS == TargetPlatform.WinPhone)
            {
                sampleName.TextColor = Color.White;
                sampleName.FontSize  = 23;
            }
            else
            {
                sampleName.TextColor = Color.Black;
            }

            if (App.Platform == Platforms.UWP && Device.Idiom == TargetIdiom.Phone)
            {
                sampleName.FontSize = 15;
            }

            rootLayout = new Grid
            {
                VerticalOptions   = LayoutOptions.FillAndExpand,
                ColumnDefinitions =
                {
                    new ColumnDefinition {
                        Width = new GridLength(1, GridUnitType.Star)
                    },
                    new ColumnDefinition {
                        Width = new GridLength(60, GridUnitType.Absolute)
                    }
                }
            };

            if (Device.OS != TargetPlatform.Android)
            {
                rootLayout.BackgroundColor = Color.White;
            }
            sampleName.TextColor = Color.FromHex("#333D47");
            if (Device.Idiom != TargetIdiom.Phone && Device.OS == TargetPlatform.Windows)
            {
                sampleName.FontSize = 15;
                sampleName.SetBinding(Label.TextColorProperty, new Binding("ForegroundColor"));
                rootLayout.SetBinding(Layout.BackgroundColorProperty, new Binding("BackgroundColor"));
            }

            rootLayout.VerticalOptions = LayoutOptions.Center;

            if (Device.OS == TargetPlatform.Android)
            {
                rootLayout.HorizontalOptions = LayoutOptions.StartAndExpand;
            }
            else
            {
                rootLayout.HorizontalOptions = LayoutOptions.Center;
            }

            rootLayout.Children.Add(sampleName, 0, 0);

            rootLayout.Padding = DeviceExt.OnPlatform(new Thickness(15, 10, 5, 5), new Thickness(15, 10, 5, 5),
                                                      new Thickness(4, 3, 5, 3));

            if (Ext.IsWinPhone())
            {
                StackLayout stackLayout = new StackLayout
                {
                    Children        = { rootLayout },
                    BackgroundColor = Color.White,
                    Padding         = 0,
                    Spacing         = 0,
                    VerticalOptions = LayoutOptions.FillAndExpand,
                };

                View = stackLayout;
            }
            else
            {
                View = rootLayout;
            }
        }
        public MasterSamplePage(MasterSample sampleList)
        {
            this.sampleList = sampleList;

            Title = Device.OS == TargetPlatform.Android ? "  " + sampleList.Title : sampleList.Title;

            if (sampleList.Samples.Count == 1)
            {
                var type = Type.GetType(sampleList.Samples[0].Type);
                if (type == null)
                {
                    Detail = new EmptyContent();
                }
                else
                {
                    var samplePage = Activator.CreateInstance(type) as SamplePage;
                    Detail = samplePage;
                }
            }
            else if (sampleList.Samples.Count > 1)
            {
                listView = new ListView
                {
                    ItemsSource     = sampleList.Samples,
                    RowHeight       = 40,
                    ItemTemplate    = new DataTemplate(typeof(SampleListCell)),
                    BackgroundColor = Color.White,
                };

                if (Device.OS == TargetPlatform.iOS)
                {
                    StackLayout listStack = new StackLayout()
                    {
                        Padding = new Thickness(0, 0, 0, 74)
                    };
                    listStack.Children.Add(listView);
                    Master = listStack;
                }
                else
                {
                    Master = listView;
                }

                listView.SeparatorColor      = Color.FromHex("#B2B2B2");
                listView.SeparatorVisibility = DeviceExt.OnPlatform(SeparatorVisibility.Default, SeparatorVisibility.Default, SeparatorVisibility.None);
                listView.ItemSelected       += (sender, args) =>
                {
                    if (listView.SelectedItem == null)
                    {
                        return;
                    }

                    var sampleDetails = args.SelectedItem as SampleDetails;

                    var type = Type.GetType(sampleDetails.Type);
                    if (type == null)
                    {
                        Detail = new EmptyContent();
                    }
                    else
                    {
                        var samplePage = Activator.CreateInstance(type) as SamplePage;
                        Detail = samplePage;
                    }
                };

                SelectSample();
            }
        }
        public ControlListCellMobile()
        {
            controlIcon = new Image
            {
                VerticalOptions = LayoutOptions.Center,
                HeightRequest   = DeviceExt.OnPlatform(32, 40, 70),
                WidthRequest    = DeviceExt.OnPlatform(32, 40, 70),
                Aspect          = Aspect.AspectFill
            };


            if (App.Platform == Platforms.UWP && Device.Idiom == TargetIdiom.Phone)
            {
                controlIcon.HeightRequest = 50;
                controlIcon.WidthRequest  = 50;
            }

            this.SetBinding(ImageIDProperty, "ImageID");
            this.SetBinding(TypeProperty, "Type");

            var controlName = new Label
            {
                VerticalOptions = LayoutOptions.Center,
                TextColor       = Color.FromHex("#333D47"),
            };

            controlName.FontSize = DeviceExt.OnPlatform(14, 14, 18);

            if (App.Platform == Platforms.UWP && Device.Idiom == TargetIdiom.Phone)
            {
                controlName.FontSize = 14;
            }

            controlName.SetBinding(Label.TextProperty, "Title");

            rootLayout = new Grid
            {
                VerticalOptions   = LayoutOptions.FillAndExpand,
                ColumnDefinitions =
                {
                    new ColumnDefinition {
                        Width = GridLength.Auto
                    },
                    new ColumnDefinition {
                        Width = new GridLength(1, GridUnitType.Star)
                    },
                    new ColumnDefinition {
                        Width = new GridLength(100, GridUnitType.Absolute)
                    }
                }
            };

            rootLayout.Children.Add(controlIcon, 0, 0);
            rootLayout.Children.Add(controlName, 1, 0);

            rootLayout.Padding = DeviceExt.OnPlatform(new Thickness(15, 5, 15, 5), new Thickness(15),
                                                      new Thickness(4, 3, 5, 4));

            rootLayout.BackgroundColor = Color.White;

            View = rootLayout;
        }
        public ControlPage()
        {
            rootLayout = new Grid();


            dummyContent = new Label();

            controlList = new ControlListViewModel();

            if (Device.Idiom == TargetIdiom.Tablet)
            {
                Title = DeviceExt.OnPlatform("Essential Studio", "  Essential Studio", "Essential Studio");
                var sampleList = controlList.MasterSampleLists;
                var count      = sampleList.Count;

                rootGrid = new Grid();
                rootLayout.Children.Add(rootGrid);
                rootGrid.Padding = new Thickness(10);

                for (var i = 0; i < count; i++)
                {
                    var control = sampleList[i];

                    StackLayout content;

                    if (Device.OS == TargetPlatform.iOS)
                    {
                        content = new StackLayout {
                            Padding = new Thickness(20, 20, 20, 20), StyleId = i.ToString()
                        };
                    }
                    else
                    {
                        content = new StackLayout {
                            Padding = new Thickness(20, 40, 20, 20), StyleId = i.ToString()
                        };
                    }

                    var tapGestue = new TapGestureRecognizer();
                    content.GestureRecognizers.Add(tapGestue);
                    tapGestue.Tapped += TapGestue_Tapped;

                    var absoluteLayout = new AbsoluteLayout {
                        HeightRequest = 76, WidthRequest = 76
                    };
                    var controlIcon = new Image
                    {
                        HeightRequest = 76,
                        WidthRequest  = 76,
                        Aspect        = Aspect.AspectFit,
                    };
                    if (Device.OS == TargetPlatform.Windows)
                    {
                        controlIcon.Source = ImageSource.FromFile("chart.png");
                    }
                    else
                    {
                        controlIcon.Source = ImageSource.FromResource("SampleBrowser.Icons." + control.ImageID);
                    }
                    var sampleName = new Label
                    {
                        Text              = control.Title,
                        FontSize          = 12,
                        HorizontalOptions = LayoutOptions.Center
                    };

                    content.Children.Add(absoluteLayout);
                    content.Children.Add(sampleName);
                    absoluteLayout.Children.Add(controlIcon);

                    absoluteLayout.HorizontalOptions = LayoutOptions.Center;

                    rootGrid.Children.Add(content);
                }

                if (Device.OS != TargetPlatform.iOS)
                {
                    rootGrid.Children.Add(dummyContent);
                }

                if (Device.OS == TargetPlatform.Android)
                {
                    Content = new ScrollView()
                    {
                        Content = rootLayout
                    }
                }
                ;
                else
                {
                    Content = rootLayout;
                }
            }
            else
            {
                Title = "Essential Studio";

                rootList        = new ListView();
                rootStackLayout = new StackLayout();

                if (!(Device.OS == TargetPlatform.Android || Device.OS == TargetPlatform.iOS))
                {
                    Label title = new Label()
                    {
                        Text = " Essential Studio", FontSize = 30, TextColor = Color.Black
                    };
                    rootStackLayout.Children.Add(title);
                    rootStackLayout.Children.Add(rootList);
                    rootLayout.Children.Add(rootStackLayout);
                }
                else
                {
                    rootLayout.Children.Add(rootList);
                }
                rootList.BackgroundColor   = Color.White;
                rootLayout.BackgroundColor = Color.White;
                aboutContent.Text          =
                    "Syncfusion Essential Studio is a collection of user interface and file format manipulation components that can be used to build line-of-business mobile applications.";
                aboutContent.TranslationX = 10;
                aboutContent.FontSize     = 26;

                Title = Device.OS == TargetPlatform.Android ? "  Essential Studio" : "Essential Studio";
                rootList.ItemsSource         = controlList.MasterSampleLists;
                rootList.ItemSelected       += listview_ItemSelected;
                rootList.SeparatorColor      = Color.FromHex("#B2B2B2");
                rootList.SeparatorVisibility = DeviceExt.OnPlatform(SeparatorVisibility.Default, SeparatorVisibility.Default, SeparatorVisibility.None);

                rootList.RowHeight = DeviceExt.OnPlatform(50, 67, 80);

                if (App.Platform == Platforms.UWP && Device.Idiom == TargetIdiom.Phone)
                {
                    rootList.RowHeight = 55;
                }

                rootList.ItemTemplate = new DataTemplate(typeof(ControlListCellMobile));
                Content = rootLayout;
            }
            rootLayout.Children.Add(indicator);
        }