public AutoFormsCustomAttribute( string customControlType, string label = null, AutoFormsOrientation orientation = AutoFormsOrientation.Default, AutoFormsLayoutOptions horizontalLabelOptions = AutoFormsLayoutOptions.Default, AutoFormsLayoutOptions horizontalControlOptions = AutoFormsLayoutOptions.Default, double controlWidthRequest = -1, string itemStyle = null, string labelStyleOverride = null, string placeholder = null, double heightRequest = -1, string isVisible = null, string isEnabled = null, string isFocused = null, int filter = 0, double paddingLeft = 0, double paddingRight = 0, double paddingTop = 0, double paddingBottom = 0, double layoutHorizontalPercentageOverride = -1, string[] grouped = null ) : base(label, AutoFormsType.Custom, orientation, horizontalLabelOptions, horizontalControlOptions, controlWidthRequest, itemStyle, labelStyleOverride, placeholder, heightRequest, isVisible, isEnabled, isFocused, filter, paddingLeft, paddingRight, paddingTop, paddingBottom, layoutHorizontalPercentageOverride, grouped) { CustomControlType = customControlType; }
protected View CreateControlContainer(string bindingName, Type fieldType, AutoFormsOrientation orientation) { var c = CreateControl(bindingName, fieldType); if (c == null) { return(null); } if (_attribute.ControlWidthRequest > 0) { c.WidthRequest = _attribute.ControlWidthRequest; } SetHorizontalLayoutOptions(c, _attribute.HorizontalControlOptions); if (orientation == AutoFormsOrientation.Horizontal) { Grid.SetColumn(c, 1); } else if (orientation == AutoFormsOrientation.HorizontalReversed) { Grid.SetColumn(c, 0); } else { Grid.SetRow(c, 1); } return(c); }
public AutoFormsListItemAttribute( string label = null, double value = 1, GridUnitType gridType = GridUnitType.Star, string itemStyle = null, string labelStyleOverride = null, TextAlignment horizontalHeaderAlignment = TextAlignment.Start, TextAlignment horizontalItemAlignment = TextAlignment.Start, AutoFormsType type = AutoFormsType.Auto, AutoFormsOrientation orientation = AutoFormsOrientation.Horizontal, AutoFormsLayoutOptions horizontalLabelOptions = AutoFormsLayoutOptions.Default, AutoFormsLayoutOptions horizontalControlOptions = AutoFormsLayoutOptions.Default, int controlWidthRequest = -1, string placeholder = null, int heightRequest = -1, string isVisible = null, string isEnabled = null, string isFocused = null, int filter = 0, string[] grouped = null, object sortValue = null) : base( label, type, orientation, horizontalLabelOptions, horizontalControlOptions, controlWidthRequest, itemStyle, labelStyleOverride, placeholder, heightRequest, isVisible, isEnabled, isFocused, filter, grouped: grouped) { Value = value; GridType = gridType; HorizontalHeaderAlignment = horizontalHeaderAlignment; HorizontalItemAlignment = horizontalItemAlignment; SortValue = sortValue; }
public AutoFormsAttribute( string label = null, AutoFormsType type = AutoFormsType.Auto, AutoFormsOrientation orientation = AutoFormsOrientation.Default, AutoFormsLayoutOptions horizontalLabelOptions = AutoFormsLayoutOptions.Default, AutoFormsLayoutOptions horizontalControlOptions = AutoFormsLayoutOptions.Default, double controlWidthRequest = -1, string itemStyle = null, string labelStyleOverride = null, string placeholder = null, double heightRequest = -1, string isVisible = null, string isEnabled = null, string isFocused = null, int filter = 0, double paddingLeft = 25, double paddingRight = 25, double paddingTop = 0, double paddingBottom = 20, double layoutHorizontalPercentageOverride = -1, string[] grouped = null) : base(filter) { Label = label; ItemStyle = itemStyle; LabelStyleOverride = labelStyleOverride; Placeholder = placeholder; Type = type; HeightRequest = heightRequest; IsVisible = isVisible; IsEnabled = isEnabled; IsFocused = isFocused; PaddingLeft = paddingLeft; PaddingRight = paddingRight; PaddingTop = paddingTop; PaddingBottom = paddingBottom; LayoutHorizontalPercentageOverride = layoutHorizontalPercentageOverride; Grouped = grouped; Orientation = orientation; HorizontalLabelOptions = horizontalLabelOptions; HorizontalControlOptions = horizontalControlOptions; ControlWidthRequest = controlWidthRequest; }
protected virtual View CreateLabel(string label, Style labelStyle, AutoFormsOrientation orientation, int col = 0, int row = 0) { var l = new Label { Style = _labelStyleOverride ?? labelStyle, Text = GetLocalizedString(label), VerticalOptions = orientation == AutoFormsOrientation.Horizontal && _attribute.HeightRequest > 0 ? LayoutOptions.StartAndExpand : LayoutOptions.CenterAndExpand, VerticalTextAlignment = TextAlignment.Center, HorizontalOptions = LayoutOptions.Fill, HorizontalTextAlignment = orientation == AutoFormsOrientation.Horizontal ? TextAlignment.End : TextAlignment.Start, LineBreakMode = LineBreakMode.WordWrap, Margin = new Thickness(0, 0, 0, 0), GestureRecognizers = { new TapGestureRecognizer { Command = new Command(OnSelectedText) } } }; if (string.IsNullOrEmpty(_attribute.IsVisible) == false) { l.SetBinding(IsVisibleProperty, new Binding(_attribute.IsVisible, BindingMode.TwoWay)); } //update the horizontal options if provided if (_attribute.Orientation == AutoFormsOrientation.Horizontal) { SetHorizontalLayoutOptions(l, _attribute.HorizontalLabelOptions); } Grid.SetColumn(l, col); Grid.SetRow(l, row); return(l); }
private void AddControlContainers(string bindingName, Type propertyType, AutoFormsOrientation orientation) { var dict = EnumHelper.ToDictionary(propertyType); var inline = false; if (_attribute is AutoFormsRadioButtonAttribute rba) { inline = rba.Inline; } var g = new RadioGroup { HorizontalOptions = LayoutOptions.Fill, VerticalOptions = LayoutOptions.StartAndExpand, }; g.SetBinding( RadioGroup.SelectedIndexProperty, new Binding(bindingName, BindingMode.TwoWay, new EnumConverter(), propertyType)); var h = new Grid { HorizontalOptions = LayoutOptions.Fill, VerticalOptions = LayoutOptions.StartAndExpand, }; if (orientation == AutoFormsOrientation.Horizontal) { Grid.SetRow(g, 1); Grid.SetColumn(g, 1); Grid.SetRow(h, 0); Grid.SetColumn(h, 1); } else { Grid.SetRow(g, 1); Grid.SetColumn(g, 1); Grid.SetRow(h, 1); Grid.SetColumn(h, 0); } foreach (var kvp in dict) { var radio = new RadioButton { HorizontalOptions = inline ? LayoutOptions.End : LayoutOptions.CenterAndExpand, VerticalOptions = LayoutOptions.CenterAndExpand, }; var lbl = new Label { Style = LabelStyle, Text = kvp.Value, VerticalOptions = LayoutOptions.CenterAndExpand, VerticalTextAlignment = TextAlignment.Center, HorizontalOptions = LayoutOptions.Fill, HorizontalTextAlignment = inline ? TextAlignment.Start : TextAlignment.Center, LineBreakMode = LineBreakMode.WordWrap, GestureRecognizers = { new TapGestureRecognizer { Command = new Command(() => radio.SelectItem()) } } }; if (_attribute.Orientation == AutoFormsOrientation.Horizontal) { if (!inline) { g.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star }); h.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star }); Grid.SetColumn(radio, g.ColumnDefinitions.Count - 1); Grid.SetColumn(lbl, g.ColumnDefinitions.Count - 1); } else { g.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star }); Grid.SetColumn(radio, g.ColumnDefinitions.Count - 1); g.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star }); Grid.SetColumn(lbl, g.ColumnDefinitions.Count - 1); } } else { // have to force them the same height h.RowDefinitions.Add(new RowDefinition { Height = 40 }); g.RowDefinitions.Add(new RowDefinition { Height = 40 }); Grid.SetRow(radio, g.RowDefinitions.Count - 1); Grid.SetRow(lbl, g.RowDefinitions.Count - 1); if (!inline) { lbl.HorizontalTextAlignment = TextAlignment.End; radio.HorizontalOptions = LayoutOptions.StartAndExpand; } else { if (g.ColumnDefinitions.Count < 2) { g.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); } if (g.ColumnDefinitions.Count < 2) { g.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star }); } Grid.SetColumn(radio, 0); Grid.SetColumn(lbl, 1); } } if (!inline) { h.Children.Add(lbl); } else { g.Children.Add(lbl); } g.Children.Add(radio); } if (_attribute.Orientation == AutoFormsOrientation.Horizontal) { SetHorizontalLayoutOptions(g, _attribute.HorizontalControlOptions); SetHorizontalLayoutOptions(h, _attribute.HorizontalControlOptions); } if (_attribute.ControlWidthRequest > 0) { g.WidthRequest = _attribute.ControlWidthRequest; h.WidthRequest = _attribute.ControlWidthRequest; } var c = Content as Grid; c.Children.Add(g); if (!_hideHeader && !inline) { c.Children.Add(h); } }
private void AddControlContainers(string bindingName, Type propertyType, AutoFormsOrientation orientation) { var dict = EnumHelper.ToDictionary(propertyType); var g = new SelectButtonGroup() { HorizontalOptions = LayoutOptions.Fill, VerticalOptions = LayoutOptions.StartAndExpand, ColumnDefinitions = { new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }, new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }, new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }, }, ColumnSpacing = 10, RowSpacing = 10 }; g.SetBinding( SelectButtonGroup.SelectedIndexProperty, new Binding(bindingName, BindingMode.TwoWay, new EnumConverter(), propertyType)); for (var i = 0; i < (dict.Count / 3) + 1; i++) { g.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto }); } if (orientation == AutoFormsOrientation.Horizontal) { Grid.SetRow(g, 0); Grid.SetColumn(g, 1); } else { Grid.SetRow(g, 1); Grid.SetColumn(g, 0); } var row = 0; var col = 0; foreach (var kvp in dict) { if (col >= g.ColumnDefinitions.Count) { col = 0; //set the column row++; } var button = new SelectButton() { HorizontalOptions = LayoutOptions.FillAndExpand, Text = GetLocalizedString(kvp.Value), Style = _itemStyle, }; Grid.SetColumn(button, col++); Grid.SetRow(button, row); g.Children.Add(button); } var c = Content as Grid; c.Children.Add(g); }