void CreateView()
        {
            var statusDataTemplate = new DataTemplate(() =>
            {
                var gridLayout = new Grid {
                    RowSpacing = 10, Padding = new Thickness(0, 0, 0, 0), Margin = new Thickness(10, 0), BackgroundColor = Color.Red
                };

                gridLayout.ColumnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(2, GridUnitType.Star)
                });
                gridLayout.ColumnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(2, GridUnitType.Star)
                });

                gridLayout.RowDefinitions.Add(new RowDefinition {
                    Height = new GridLength(30, GridUnitType.Absolute)
                });
                var outerlayout = new StackLayout {
                    Margin = 0, HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.Start
                };
                var layout = new StackLayout {
                    Orientation = StackOrientation.Horizontal, Margin = 10, HorizontalOptions = LayoutOptions.FillAndExpand
                };
                var label1 = new CustomLabel {
                    HorizontalOptions = LayoutOptions.StartAndExpand, WidthRequest = 130
                };
                var label2 = new CustomLabel {
                    HorizontalOptions = LayoutOptions.CenterAndExpand, WidthRequest = 130, Text = "Completed"
                };
                gridLayout.Children.Add(label1, 0, 0);
                gridLayout.Children.Add(label2, 1, 0);
                layout.Children.Add(label1);
                layout.Children.Add(label2);
                outerlayout.Children.Add(layout);
                Grid.SetColumnSpan(outerlayout, 2);
                gridLayout.Children.Add(outerlayout);
                return(new ViewCell {
                    View = gridLayout, Height = 30
                });
            });

            var titleDataTemplate = new DataTemplate(() =>
            {
                var gridLayout = new Grid {
                    RowSpacing = 10, Padding = new Thickness(0, 0, 0, 0), Margin = new Thickness(10, 0), BackgroundColor = Color.Blue
                };

                gridLayout.ColumnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(2, GridUnitType.Star)
                });
                gridLayout.ColumnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(2, GridUnitType.Star)
                });

                gridLayout.RowDefinitions.Add(new RowDefinition {
                    Height = new GridLength(1, GridUnitType.Star)
                });
                var outerlayout = new StackLayout {
                    Margin = 10
                };
                var layout = new StackLayout
                {
                    Orientation = StackOrientation.Horizontal, Margin = 0
                };
                var label1 = new CustomLabel {
                    HorizontalOptions = LayoutOptions.StartAndExpand, WidthRequest = 130, Text = "Property"
                };
                var label2 = new CustomLabel {
                    HorizontalOptions = LayoutOptions.CenterAndExpand, WidthRequest = 130, BindingKey = "13LA"
                };
                gridLayout.Children.Add(label1, 0, 0);
                gridLayout.Children.Add(label2, 1, 0);
                layout.Children.Add(label1);
                layout.Children.Add(label2);
                outerlayout.Children.Add(layout);
                Grid.SetColumnSpan(outerlayout, 2);
                gridLayout.Children.Add(outerlayout);
                return(new ViewCell {
                    View = gridLayout, Height = 40
                });
            });

            var entryDataTemplate = new DataTemplate(() =>
            {
                var gridLayout = new Grid {
                    RowSpacing = 10, Padding = new Thickness(0, 0, 0, 0), Margin = new Thickness(10, 0), BackgroundColor = Color.Yellow
                };

                gridLayout.ColumnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(2, GridUnitType.Star)
                });
                gridLayout.ColumnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(2, GridUnitType.Star)
                });

                gridLayout.RowDefinitions.Add(new RowDefinition {
                    Height = new GridLength(1, GridUnitType.Star)
                });
                var outerlayout = new StackLayout {
                    Margin = 0
                };
                var layout = new StackLayout {
                    Orientation = StackOrientation.Vertical, Margin = 10
                };
                var label = new CustomLabel {
                    HorizontalOptions = LayoutOptions.StartAndExpand, BindingKey = "Note"
                };
                var entry = new CustomEditor
                {
                    HorizontalOptions = LayoutOptions.FillAndExpand,
                    VerticalOptions   = LayoutOptions.StartAndExpand,
                    HeightRequest     = 100,
                    IsEnabled         = true,
                    Text                = "nothing",
                    BackgroundColor     = Color.Transparent,
                    RoundedCornerRadius = 20,
                    BorderWidth         = 1,
                    BorderColor         = Color.Transparent
                };
                var frame = new CustomFrame {
                    CornerRadius = 20, Content = entry, Padding = 0, HasShadow = true
                };
                gridLayout.Children.Add(label, 0, 0);
                gridLayout.Children.Add(frame, 0, 0);
                Grid.SetColumnSpan(frame, 2);
                layout.Children.Add(label);
                layout.Children.Add(frame);
                outerlayout.Children.Add(layout);
                Grid.SetColumnSpan(layout, 2);
                Grid.SetColumnSpan(outerlayout, 2);
                gridLayout.Children.Add(outerlayout);
                return(new ViewCell {
                    View = gridLayout, Height = 150
                });
            });
            var btntemplate = new DataTemplate(() =>
            {
                var gridLayout = new Grid {
                    RowSpacing = 0, Padding = new Thickness(0, 0, 0, 0), Margin = new Thickness(10, 0), BackgroundColor = Color.Gray
                };

                gridLayout.ColumnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(2, GridUnitType.Star)
                });
                gridLayout.ColumnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(2, GridUnitType.Star)
                });

                gridLayout.RowDefinitions.Add(new RowDefinition {
                    Height = new GridLength(1, GridUnitType.Star)
                });
                var outerlayout = new StackLayout {
                    Margin = new Thickness(0)
                };
                var layout = new StackLayout {
                    Orientation = StackOrientation.Horizontal, Margin = 10
                };
                var btn1 = new RoundedButtonLeft
                {
                    HorizontalOptions = LayoutOptions.FillAndExpand,
                    VerticalOptions   = LayoutOptions.StartAndExpand,
                    Text            = "left",
                    BackgroundColor = Color.Green,
                    CornerRadius    = 0,
                    TextColor       = Color.White
                };
                var btn2 = new RoundedButtonRight
                {
                    HorizontalOptions = LayoutOptions.FillAndExpand,
                    VerticalOptions   = LayoutOptions.StartAndExpand,
                    Text            = "right",
                    BackgroundColor = Color.Green,
                    CornerRadius    = 0,
                    TextColor       = Color.White
                };
                gridLayout.Children.Add(btn1, 0, 0);
                gridLayout.Children.Add(btn2, 1, 0);
                layout.Children.Add(btn1);
                layout.Children.Add(btn2);
                outerlayout.Children.Add(layout);
                Grid.SetColumnSpan(outerlayout, 2);
                gridLayout.Children.Add(outerlayout);
                return(new ViewCell {
                    View = gridLayout, Height = 40
                });
            });

            Content = new StackLayout
            {
                Margin   = new Thickness(5),
                Children =
                {
                    new ListView {
                        ItemTemplate = new PersonDataTemplateSelector{
                            StatusLabelTemplate = statusDataTemplate, TitleTemplate = titleDataTemplate, EntryTemplate = entryDataTemplate, ButtonTemplate = btntemplate
                        },
                        ItemsSource       = Test, Margin = new Thickness(0, 10, 0, 10), InputTransparent = false,
                        HasUnevenRows     = true, SeparatorVisibility = SeparatorVisibility.None,
                        HorizontalOptions = LayoutOptions.FillAndExpand, SelectionMode = ListViewSelectionMode.None,
                    }
                }
            };

            this.BindingContext = Test;
        }
Пример #2
0
        void SetView()
        {
            var test = Test;

            var gridLayout = new Grid {
                RowSpacing = 10, Padding = new Thickness(0, 10, 0, 10), Margin = 10, BackgroundColor = Color.Transparent
            };

            gridLayout.ColumnDefinitions.Add(new ColumnDefinition {
                Width = new GridLength(2, GridUnitType.Star)
            });
            gridLayout.ColumnDefinitions.Add(new ColumnDefinition {
                Width = new GridLength(2, GridUnitType.Star)
            });

            gridLayout.RowDefinitions.Add(new RowDefinition {
                Height = new GridLength(1, GridUnitType.Star)
            });
            var outerlayout = new StackLayout {
                Margin = 10
            };

            for (int i = 0; i < test.Count; i++)
            {
                var           data = test[i];
                List <string> yui  = new List <string>();
                int           l    = 0;
                foreach (string item in data.Values)
                {
                    var k = item;
                    yui.Add(k);
                    l++;
                }
                if (test[i].ContainsValue("Status_Label"))
                {
                    var layout = new StackLayout {
                        Orientation = StackOrientation.Horizontal, Margin = 10
                    };
                    var label1 = new CustomLabel {
                        HorizontalOptions = LayoutOptions.StartAndExpand, WidthRequest = 130
                    };
                    var label2 = new CustomLabel {
                        HorizontalOptions = LayoutOptions.CenterAndExpand, WidthRequest = 130, BindingKey = yui[1]
                    };
                    gridLayout.Children.Add(label1, 0, 0);
                    gridLayout.Children.Add(label2, 1, 0);
                    layout.Children.Add(label1);
                    layout.Children.Add(label2);
                    outerlayout.Children.Add(layout);
                }
                else if (test[i].ContainsValue("Title_Label"))
                {
                    var layout = new StackLayout
                    {
                        Orientation = StackOrientation.Horizontal, Margin = 10
                    };
                    var label1 = new CustomLabel {
                        HorizontalOptions = LayoutOptions.StartAndExpand, WidthRequest = 130, BindingKey = yui[1]
                    };
                    var label2 = new CustomLabel {
                        HorizontalOptions = LayoutOptions.CenterAndExpand, WidthRequest = 130, BindingKey = yui[2]
                    };
                    gridLayout.Children.Add(label1, 0, 0);
                    gridLayout.Children.Add(label2, 1, 0);
                    layout.Children.Add(label1);
                    layout.Children.Add(label2);
                    outerlayout.Children.Add(layout);
                }
                else if (test[i].ContainsValue("Title_Entry"))
                {
                    var layout = new StackLayout {
                        Orientation = StackOrientation.Vertical, Margin = 10
                    };
                    var label = new CustomLabel {
                        HorizontalOptions = LayoutOptions.StartAndExpand, BindingKey = yui[1]
                    };
                    var entry = new CustomEditor {
                        HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.StartAndExpand,
                        HeightRequest     = 100, IsEnabled = true, Text = yui[2], BackgroundColor = Color.Transparent, RoundedCornerRadius = 20, BorderWidth = 1, BorderColor = Color.Transparent
                    };
                    var frame = new CustomFrame {
                        CornerRadius = 20, Content = entry, Padding = 0, HasShadow = true
                    };
                    gridLayout.Children.Add(label, 0, 0);
                    gridLayout.Children.Add(frame, 0, 0);
                    Grid.SetColumnSpan(frame, 2);
                    layout.Children.Add(label);
                    layout.Children.Add(frame);
                    outerlayout.Children.Add(layout);
                    Grid.SetColumnSpan(layout, 2);
                }
                else if (test[i].ContainsValue("Title_Button"))
                {
                    var layout = new StackLayout {
                        Orientation = StackOrientation.Horizontal, Margin = 10
                    };
                    var btn1 = new RoundedButtonLeft {
                        HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.StartAndExpand,
                        Text = yui[1], BackgroundColor = Color.Green, CornerRadius = 0, TextColor = Color.White
                    };
                    var btn2 = new RoundedButtonRight {
                        HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.StartAndExpand,
                        Text = yui[2], BackgroundColor = Color.Green, CornerRadius = 0, TextColor = Color.White
                    };
                    gridLayout.Children.Add(btn1, 0, 0);
                    gridLayout.Children.Add(btn2, 1, 0);
                    layout.Children.Add(btn1);
                    layout.Children.Add(btn2);
                    outerlayout.Children.Add(layout);
                }
            }
            Grid.SetColumnSpan(outerlayout, 2);
            gridLayout.Children.Add(outerlayout);
            Content = new StackLayout {
                Children = { gridLayout }
            };
        }