| 
					
				 | 
			
			
				@@ -65,7 +65,7 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     #endregion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private readonly SfDataGrid DataGrid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    protected readonly SfDataGrid DataGrid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private readonly ContextMenu ColumnsMenu; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -373,7 +373,7 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var columnindex = DataGrid.ResolveToGridVisibleColumnIndex(rowcolumnindex.ColumnIndex); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // Header Click Here! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (rowcolumnindex.RowIndex == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (rowcolumnindex.RowIndex < DataGrid.StackedHeaderRows.Count + 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var column = GetColumn(columnindex); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -570,10 +570,36 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void DataGrid_FilterItemsPopulating(object? sender, GridFilterItemsPopulatingEventArgs e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var col = DataGrid.Columns.IndexOf(e.Column); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (GetColumn(col) is DynamicActionColumn column && column.Filters is not null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            e.ItemsSource = column.Filters.Select(x => new FilterElement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { DisplayText = x, ActualValue = x, IsSelected = column.SelectedFilters is null || column.SelectedFilters.Contains(x) }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var colIdx = DataGrid.Columns.IndexOf(e.Column); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var column = GetColumn(colIdx); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(column is not null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var filterItems = Parent.GetColumnFilterItems(column); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(filterItems is not null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                e.ItemsSource = filterItems.Select(x => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var element = new FilterElement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        DisplayText = x, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ActualValue = x, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(column is DynamicActionColumn dac) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        element.IsSelected = dac.SelectedFilters is null || dac.SelectedFilters.Contains(x); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return element; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else if (column is DynamicActionColumn dac && dac.Filters is not null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                e.ItemsSource = dac.Filters.Select(x => new FilterElement { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    DisplayText = x, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ActualValue = x, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    IsSelected = dac.SelectedFilters is null || dac.SelectedFilters.Contains(x) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void DataGrid_CellToolTipOpening(object? sender, GridCellToolTipOpeningEventArgs e) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -618,6 +644,10 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     list.Add(new(gridColumn.ColumnName, rowPredicate)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else if(col is DynamicActionColumn dac && dac.FilterRecord is not null && dac.SelectedFilters is not null && dac.SelectedFilters.Length > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                list.Add(new(column.MappingName, (row) => dac.FilterRecord(row, dac.SelectedFilters))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -829,7 +859,7 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     newcol.Width = column.Width; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     newcol.ColumnSizer = GridLengthUnitType.None; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     newcol.HeaderText = column.HeaderText; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    newcol.AllowFiltering = column.Filters != null && column.Filters.Any(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    newcol.AllowFiltering = column.Filters != null && column.Filters.Length != 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     newcol.AllowSorting = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     newcol.FilterRowOptionsVisibility = Visibility.Collapsed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     newcol.ShowHeaderToolTip = column.ToolTip != null; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -926,21 +956,34 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     cellstyle.Setters.Add(new Setter(Control.BackgroundProperty, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         new Binding() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            Path = new PropertyPath("."), Converter = CellBackgroundConverter, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            ConverterParameter = column 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Path = new PropertyPath("."), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Converter = CellBackgroundConverter, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     cellstyle.Setters.Add(new Setter(Control.ForegroundProperty, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         new Binding() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            { Converter = CellForegroundConverter, ConverterParameter = column })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Converter = CellForegroundConverter, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     cellstyle.Setters.Add(new Setter(Control.FontSizeProperty, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         new Binding() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            { Converter = CellFontSizeConverter, ConverterParameter = column })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Converter = CellFontSizeConverter, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     cellstyle.Setters.Add(new Setter(Control.FontStyleProperty, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         new Binding() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            { Converter = CellFontStyleConverter, ConverterParameter = column })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Converter = CellFontStyleConverter, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     cellstyle.Setters.Add(new Setter(Control.FontWeightProperty, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         new Binding() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            { Converter = CellFontWeightConverter, ConverterParameter = column })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Converter = CellFontWeightConverter, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     newcol.CellStyle = cellstyle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     DataGrid.Columns.Add(newcol); 
			 |