private void OnLayoutHeaderedCell(HeaderedControlCell cell) { var grid = ((IPairable)cell).Pair as IGridCell; if (grid == null) { return; } grid.Columns.Clear(); grid.Rows.Clear(); grid.Columns.Add(Column.OneStar); grid.Rows.Add(Row.AutoSized); cell.Header.Font = Font.PreferredHeaderFont; cell.Header.Lines = 1; cell.Header.VerticalAlignment = VerticalAlignment.Center; cell.Header.HorizontalAlignment = HorizontalAlignment.Stretch; cell.Header.RowIndex = 0; foreach (var boolSwitch in grid.Children.OfType <ISwitch>()) { grid.Columns.Insert(0, Column.AutoSized); boolSwitch.VerticalAlignment = VerticalAlignment.Center; boolSwitch.Margin = new Thickness(0, 0, Thickness.LargeHorizontalSpacing, 0); boolSwitch.RowIndex = 0; boolSwitch.ColumnIndex = grid.Columns.Count - 2; } cell.Header.ColumnIndex = grid.Columns.Count - 1; foreach (var control in grid.Children.Where(c => c != cell.Header && !(c is ISwitch))) { grid.Rows.Add(Row.AutoSized); control.RowIndex = grid.Rows.Count - 1; control.ColumnIndex = 0; control.ColumnSpan = grid.Columns.Count; control.Margin = new Thickness(0, Thickness.SmallVerticalSpacing, 0, 0); if (control is IButton || control is IDatePicker || control is ITimePicker) { control.HorizontalAlignment = HorizontalAlignment.Stretch; } if (control is ITextArea) { control.VerticalAlignment = VerticalAlignment.Stretch; grid.Rows[control.RowIndex] = Row.OneStar; } else { control.VerticalAlignment = VerticalAlignment.Top; } } }
// if controls.count < 3 && all are image or switch then set beside private void OnLayoutHeaderedCell(HeaderedControlCell cell) { var grid = ((IPairable)cell).Pair as IGridBase; if (grid == null) { return; } var controls = grid.Children.Where(c => c != cell.Header).ToList(); var first = controls.FirstOrDefault(); if (controls.Count == 0 || controls.Count > 2 || !(first is ISwitch) && !(first is IImage)) { return; } grid.Columns.Clear(); grid.Rows.Clear(); grid.Columns.Add(Column.OneStar); grid.Columns.Add(Column.AutoSized); grid.Rows.Add(Row.AutoSized); grid.Rows.Add(Row.AutoSized); if (!string.IsNullOrEmpty(cell.Header.Text)) { cell.Header.Font = Font.PreferredHeaderFont.Size > 0 ? Font.PreferredHeaderFont : Font.PreferredLabelFont; cell.Header.Lines = 1; cell.Header.VerticalAlignment = VerticalAlignment.Center; cell.Header.HorizontalAlignment = HorizontalAlignment.Left; cell.Header.RowIndex = 0; cell.Header.ColumnIndex = 0; first.Margin = new Thickness(Thickness.LargeHorizontalSpacing, 0, 0, 0); } else { first.Margin = new Thickness(); } first.VerticalAlignment = VerticalAlignment.Center; first.RowIndex = 0; first.ColumnIndex = 1; if (string.IsNullOrEmpty(cell.Header.Text)) { grid.Columns[2] = new Column(0, LayoutUnitType.Absolute); } }
// if controls.count == 1 then set beside // if controls.count < 3 && all are picker, image, selectlist, or switch then set beside private void OnLayoutHeaderedCell(HeaderedControlCell cell) { var grid = ((IPairable)cell).Pair as IGridBase; if (grid == null) { return; } grid.Columns.Clear(); grid.Rows.Clear(); var controls = grid.Children.Where(c => c != cell.Header).ToList(); grid.Columns.Add(Column.OneStar); grid.Rows.Add(Row.AutoSized); cell.Header.Font = Font.PreferredHeaderFont.Size > 0 ? Font.PreferredHeaderFont : Font.PreferredLabelFont; cell.Header.Lines = 1; cell.Header.VerticalAlignment = VerticalAlignment.Center; cell.Header.HorizontalAlignment = HorizontalAlignment.Left; cell.Header.RowIndex = 0; cell.Header.ColumnIndex = 0; int firstLabel = controls.FindIndex(c => c is ILabel); if (firstLabel < 0) { firstLabel = controls.Count; } var first = controls.FirstOrDefault(); if (firstLabel == 1 && !(first is ITextArea)) { first.Margin = new Thickness((first is ISlider) ? Thickness.LeftMargin : Thickness.LargeHorizontalSpacing, 0, 0, 0); if (first is ITextBox || first is IPasswordBox || first is ISlider) { grid.Columns[0] = Column.AutoSized; grid.Columns.Insert(1, Column.OneStar); } else { grid.Columns.Insert(1, Column.AutoSized); } first.VerticalAlignment = VerticalAlignment.Center; first.RowIndex = 0; first.ColumnIndex = 1; } else if (firstLabel == 2 && !(controls.Any(c => c is ITextBox || c is IPasswordBox || c is ITextArea || c is ISlider))) { grid.Columns.Insert(1, Column.AutoSized); grid.Columns.Insert(2, Column.AutoSized); first.Margin = new Thickness(Thickness.LargeHorizontalSpacing, 0, Thickness.SmallHorizontalSpacing, 0); first.VerticalAlignment = VerticalAlignment.Center; first.RowIndex = 0; first.ColumnIndex = 1; var second = controls[1]; second.VerticalAlignment = VerticalAlignment.Center; second.RowIndex = 0; second.ColumnIndex = 2; } else { for (int i = 0; i < firstLabel; i++) { var control = controls[i]; if (control is ITextArea) { grid.Rows.Add(Row.OneStar); control.VerticalAlignment = VerticalAlignment.Stretch; } else { grid.Rows.Add(Row.AutoSized); control.VerticalAlignment = VerticalAlignment.Center; } control.Margin = new Thickness(0, Thickness.SmallVerticalSpacing, 0, 0); control.RowIndex = grid.Rows.Count - 1; control.ColumnIndex = 0; } } for (int i = firstLabel; i < controls.Count; i++) { grid.Rows.Add(Row.AutoSized); var control = controls[i]; control.Margin = new Thickness(0, Thickness.SmallVerticalSpacing, 0, 0); control.VerticalAlignment = VerticalAlignment.Center; control.RowIndex = grid.Rows.Count - 1; control.ColumnIndex = 0; control.ColumnSpan = grid.Columns.Count; } }