using InABox.Core; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace InABox.DynamicGrid; public interface IDynamicGridColumnFilter { event Action? FilterChanged; FrameworkElement CreateControl(); bool FilterRow(CoreRow row); void ClearFilter(); bool IsFiltered(); IEnumerable GetRowsToFilter(IBaseDynamicGrid grid) { IEnumerable rows = grid.Data.Rows; foreach(var column in grid.ColumnList) { if(grid.GetColumnFilter(column) is IDynamicGridColumnFilter filter && filter != this) { rows = rows.Where(filter.FilterRow); } } return rows; } }