| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | using System;using System.Linq;using System.Linq.Expressions;using System.Windows.Media.Imaging;using InABox.Core;using InABox.WPF;namespace InABox.DynamicGrid{    public class DynamicTickColumn<T, P> : DynamicImageColumn where T : BaseObject, new() where P : struct    {        private readonly BitmapImage? Data = Wpf.Resources.tick.AsBitmapImage();        private readonly BitmapImage? Header;        private readonly BitmapImage? NoData;        private readonly Expression<Func<T, P>> Property;        public DynamicTickColumn(Expression<Func<T, P>> property, BitmapImage? header, BitmapImage? data, BitmapImage? nodata,            ActionDelegate? action = null) : base(r => null, action)        {            Header = header;            Data = data;            NoData = nodata;            Property = property;            Image = GetImage;            Filters = new[] { "(Blank)", "(Not Blank)" };            FilterRecord = TickFilter;        }        private bool TickFilter(CoreRow row, string[] filter)        {            if (filter.Contains("(Blank)") && !HasData(row))                return true;            if (filter.Contains("(Not Blank)") && HasData(row))                return true;            return false;        }        private BitmapImage? GetImage(CoreRow? row)        {            if (row == null)                return Header;            return HasData(row) ? Data : NoData;        }        private bool HasData(CoreRow row)        {            var value = row.Get(Property);            return !value.Equals(default(P));            //bool hasdata = false;            //if (typeof(P) == typeof(bool))            //    hasdata = value.Equals(true);            //else if (typeof(P) == typeof(DateTime))            //    hasdata = !value.Equals(DateTime.MinValue);            //return hasdata;        }    }}
 |