IDynamicGridColumnFilter.cs 815 B

1234567891011121314151617181920212223242526272829303132333435
  1. using InABox.Core;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. namespace InABox.DynamicGrid;
  9. public interface IDynamicGridColumnFilter
  10. {
  11. event Action<IDynamicGridColumnFilter>? FilterChanged;
  12. FrameworkElement CreateControl();
  13. bool FilterRow(CoreRow row);
  14. void ClearFilter();
  15. bool IsFiltered();
  16. IEnumerable<CoreRow> GetRowsToFilter(IBaseDynamicGrid grid)
  17. {
  18. IEnumerable<CoreRow> rows = grid.Data.Rows;
  19. foreach(var column in grid.ColumnList)
  20. {
  21. if(grid.GetColumnFilter(column) is IDynamicGridColumnFilter filter && filter != this)
  22. {
  23. rows = rows.Where(filter.FilterRow);
  24. }
  25. }
  26. return rows;
  27. }
  28. }