| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | using System;using System.Linq.Expressions;using InABox.Core;namespace InABox.DynamicGrid;public class DynamicTextColumn : DynamicActionColumn{    public delegate object? GetTextDelegate(CoreRow? row);    public GetTextDelegate Text { get; protected set; }            public Alignment Alignment { get; set; }        public string? Format { get; set; }    protected DynamicTextColumn()    {        Alignment = Alignment.MiddleCenter;        VerticalHeader = false;    }    public DynamicTextColumn(GetTextDelegate text, ActionDelegate? action = null) : this()    {        Text = text;        Action = action;    }    public override object? Data(CoreRow? row)    {        var result = Text?.Invoke(row);        if (!string.IsNullOrWhiteSpace(Format))            return String.Format($"{{0:{Format}}}", result);        return result;    }}public class DynamicTextColumn<T> : DynamicTextColumn{    public Expression<Func<T, object>> Property { get; set; }    public DynamicTextColumn(Expression<Func<T, object>> property, ActionDelegate? action = null)    {        Text = GetText;        Action = action;        Property = property;    }    private object GetText(CoreRow? row)    {        return row?.Get(Property) ?? "";    }}
 |