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; }
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 } }; }