123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- using System;
- using System.Linq.Expressions;
- using Syncfusion.SfDataGrid.XForms;
- using Xamarin.Forms;
- namespace InABox.Mobile
- {
-
- public abstract class MobileGridColumn<TEntity, TType> : IMobileGridColumn
- {
-
- public MobileGridColumn()
- {
- Alignment = TextAlignment.Center;
- Width = GridLength.Star;
- }
-
- public Expression<Func<TEntity,TType>> 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<IMobileGridColumn, object> Tapped { get; set; }
-
- public abstract GridColumn CreateColumn();
-
- public TColumn CreateColumn<TColumn>() 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;
- }
-
- }
- }
|