using System; using System.Linq.Expressions; using Microsoft.SqlServer.Server; using Syncfusion.SfDataGrid.XForms; using Xamarin.Forms; namespace comal.timesheets { public abstract class MobileGridColumn : IMobileGridColumn { public MobileGridColumn() { Alignment = TextAlignment.Center; Width = GridLength.Star; } public Expression> Column { get; set; } // This should come from CoreUtils public String ColumnName => Column?.ToString().Replace(" ","").Replace("x=>x.","") ?? ""; public GridLength Width { get; set; } public String Caption { get; set; } public TextAlignment Alignment { get; set; } public Action Tapped { get; set; } public abstract GridColumn CreateColumn(); public TColumn CreateColumn() where TColumn : GridColumn, new() { var result = new TColumn(); result.MappingName = ColumnName; if (Width.IsStar) result.ColumnSizer = ColumnSizer.Star; else if (Width.IsAuto) result.ColumnSizer = ColumnSizer.Auto; else { result.ColumnSizer = ColumnSizer.None; result.Width = Width.Value; } result.TextAlignment = Alignment; result.HeaderTextAlignment = Alignment; result.HeaderText = Caption; return result; } } }