public ContentTypeDetailsPage(ContentTypeDetailViewModel viewModel) { BindingContext = this.viewModel = viewModel; var layout = new StackLayout { Spacing = 20, Padding = 15 }; var nameLabel = new Label { Text = "Name", FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)) }; var nameEntry = new Label { Text = viewModel.ContentType.name, FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Entry)) }; var descriptionLabel = new Label { Text = "Description", FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)) }; var descriptionEditor = new Label { Text = viewModel.ContentType.description, FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Editor)), Margin = 0 }; var fieldListLabel = new Label { Text = "Fields", FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)) }; layout.Children.Add(nameLabel); layout.Children.Add(nameEntry); layout.Children.Add(descriptionLabel); layout.Children.Add(descriptionEditor); layout.Children.Add(fieldListLabel); var fieldList = new ListView { ItemsSource = viewModel.ContentType.fields, ItemTemplate = new DataTemplate(() => { var textCell = new TextCell(); textCell.SetBinding(TextCell.TextProperty, "label"); textCell.SetBinding(TextCell.DetailProperty, "type"); textCell.TextColor = Color.FromHex("737373"); textCell.DetailColor = Color.Gray; return(textCell); }), VerticalOptions = LayoutOptions.FillAndExpand }; layout.Children.Add(fieldList); Title = viewModel.ContentType.name; Content = layout; }
public NewContentItemPage(ContentTypeDetailViewModel viewModel) { typeViewModel = viewModel; BindingContext = _itemModel; _layout = new StackLayout { Spacing = 20, Padding = 15 }; // mimic grabbing a column name at runtime and adding it as a property foreach (var field in typeViewModel.ContentType.fields) { var fieldLabel = new Label { Text = field.label, FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)) }; _layout.Children.Add(fieldLabel); switch (field.type) { case "singleLineText": var fieldEntry = new Entry { StyleId = field.name, FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Entry)) }; _layout.Children.Add(fieldEntry); break; case "multiLineText": var fieldEditor = new Editor { StyleId = field.name, FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Editor)), HeightRequest = 150 }; _layout.Children.Add(fieldEditor); break; default: var fieldDefault = new Entry { StyleId = field.name, FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Entry)) }; _layout.Children.Add(fieldDefault); break; } } Title = $"New {typeViewModel.ContentType.name}"; Content = _layout; var draft = new ToolbarItem { Text = "Draft", Command = new Command <bool>(SaveContentItem), CommandParameter = false }; ToolbarItems.Add(draft); var publish = new ToolbarItem { Text = "Publish", Command = new Command <bool>(SaveContentItem), CommandParameter = true }; ToolbarItems.Add(publish); }