Bläddra i källkod

Changed DynamicActionColumn to Dynamic Image Column and added DynamicTextColumn functionality

Frank van den Bos 2 år sedan
förälder
incheckning
b2004c2e0d

+ 55 - 21
InABox.DynamicGrid/Columns/DynamicActionColumn.cs

@@ -7,32 +7,19 @@ using InABox.Core;
 
 namespace InABox.DynamicGrid
 {
-    public class DynamicActionColumn : DynamicColumnBase
-    {
-        public DynamicActionColumn(Func<CoreRow?, BitmapImage?> image, Func<CoreRow?, bool>? action = null)
-        {
-            Image = image;
-            Action = action;
-        }
 
-        public DynamicActionColumn(BitmapImage image, Func<CoreRow?, bool>? action = null)
-        {
-            Image = r => image;
-            Action = action;
-        }
-
-        public Func<CoreRow?, BitmapImage?> Image { get; protected set; }
-        public Func<CoreRow?, bool>? Action { get; protected set; }
-
-        public Func<DynamicActionColumn, CoreRow?, FrameworkElement?>? ToolTip { get; set; }
+    public abstract class DynamicActionColumn : DynamicColumnBase
+    {
         public DynamicActionColumnPosition Position { get; set; }
+        
+        public Func<CoreRow?, bool>? Action { get; set; }
 
+        public Func<DynamicActionColumn, CoreRow?, FrameworkElement?>? ToolTip { get; set; }
+        
         public string[] SelectedFilters { get; set; }
         public string[] Filters { get; set; }
         public Func<CoreRow, string[], bool> FilterRecord { get; set; }
 
-        public bool AllowHeaderClick { get; set; }
-
         public Func<CoreRow[], ContextMenu> ContextMenu { get; set; }
 
         public object Tag { get; set; }
@@ -40,13 +27,12 @@ namespace InABox.DynamicGrid
         public string HeaderText { get; set; }
 
         public int Width { get; set; }
-
+        
         protected override void Init()
         {
             base.Init();
             Width = 0;
             HeaderText = " ";
-            AllowHeaderClick = false;
             Filters = null;
             FilterRecord = null;
             Position = DynamicActionColumnPosition.End;
@@ -83,5 +69,53 @@ namespace InABox.DynamicGrid
             result.Child = new Image { Source = image };
             return result;
         }
+
+        public abstract object Data(CoreRow? row);
+
+    }
+
+    public class DynamicTextColumn : DynamicActionColumn
+    {
+        public Func<CoreRow?, String> Text { get; private set; }
+        
+        public Alignment Alignment { get; set; }
+        
+        public DynamicTextColumn(Func<CoreRow?, String?> text, Func<CoreRow?, bool>? action = null)
+        {
+            Alignment = Alignment.MiddleCenter;
+            Text = text;
+            Action = action;
+        }
+
+        public override object Data(CoreRow? row) => Text?.Invoke(row);
+    }
+    
+    public class DynamicImageColumn : DynamicActionColumn
+    {
+        public DynamicImageColumn(Func<CoreRow?, BitmapImage?> image, Func<CoreRow?, bool>? action = null)
+        {
+            Image = image;
+            Action = action;
+        }
+
+        public DynamicImageColumn(BitmapImage image, Func<CoreRow?, bool>? action = null)
+        {
+            Image = r => image;
+            Action = action;
+        }
+
+        public Func<CoreRow?, BitmapImage?> Image { get; protected set; }
+
+        
+        public bool AllowHeaderClick { get; set; }
+
+        protected override void Init()
+        {
+            base.Init();
+            AllowHeaderClick = false;
+        }
+        
+        public override object Data(CoreRow? row) => Image?.Invoke(row);
     }
+    
 }

+ 2 - 2
InABox.DynamicGrid/Columns/DynamicImageColumn.cs → InABox.DynamicGrid/Columns/DynamicImagePreviewColumn.cs

@@ -16,7 +16,7 @@ using Microsoft.Win32;
 
 namespace InABox.DynamicGrid
 {
-    public class DynamicImageColumn<T> : DynamicActionColumn
+    public class DynamicImagePreviewColumn<T> : DynamicImageColumn
         where T : Entity, IRemotable, IPersistent, new()
     {
         private static readonly BitmapImage _preview = Resources.doc_png.AsBitmapImage();
@@ -27,7 +27,7 @@ namespace InABox.DynamicGrid
 
         private readonly IDynamicGrid _parent;
 
-        public DynamicImageColumn(IDynamicGrid parent, Expression<Func<T, ImageDocumentLink>> property, bool canupdate) : base(PreviewImage)
+        public DynamicImagePreviewColumn(IDynamicGrid parent, Expression<Func<T, ImageDocumentLink>> property, bool canupdate) : base(PreviewImage)
         {
             _parent = parent;
             _property = property;

+ 1 - 1
InABox.DynamicGrid/Columns/DynamicIssuesColumn.cs

@@ -10,7 +10,7 @@ using InABox.WPF;
 
 namespace InABox.DynamicGrid
 {
-    public class DynamicIssuesColumn<T> : DynamicActionColumn
+    public class DynamicIssuesColumn<T> : DynamicImageColumn
         where T : Entity, IRemotable, IPersistent, IIssues, new()
     {
         private static readonly BitmapImage _warning = Resources.warning.AsBitmapImage();

+ 1 - 1
InABox.DynamicGrid/Columns/DynamicMenuColumn.cs

@@ -19,7 +19,7 @@ namespace InABox.DynamicGrid
         Hidden
     }
     
-    public class DynamicMenuColumn : DynamicActionColumn
+    public class DynamicMenuColumn : DynamicImageColumn
     {
         private readonly Action<DynamicMenuColumn, CoreRow?> _build;
 

+ 1 - 1
InABox.DynamicGrid/Columns/DynamicTickColumn.cs

@@ -8,7 +8,7 @@ using InABox.WPF;
 
 namespace InABox.DynamicGrid
 {
-    public class DynamicTickColumn<T, P> : DynamicActionColumn where T : BaseObject, new() where P : struct
+    public class DynamicTickColumn<T, P> : DynamicImageColumn where T : BaseObject, new() where P : struct
     {
         private readonly BitmapImage? Data = Resources.tick.AsBitmapImage();
 

+ 2 - 2
InABox.DynamicGrid/DynamicDocumentGrid.cs

@@ -39,8 +39,8 @@ namespace InABox.DynamicGrid
             HiddenColumns.Add(x => x.DocumentLink.ID);
             HiddenColumns.Add(x => x.Superceded);
             HiddenColumns.Add(x => x.DocumentLink.FileName);
-            ActionColumns.Add(new DynamicActionColumn(DocumentImage, ViewDocument) { Position = DynamicActionColumnPosition.Start });
-            supercedecolumn = new DynamicActionColumn(SupercededImage, SupercedeDocument);
+            ActionColumns.Add(new DynamicImageColumn(DocumentImage, ViewDocument) { Position = DynamicActionColumnPosition.Start });
+            supercedecolumn = new DynamicImageColumn(SupercededImage, SupercedeDocument);
             ActionColumns.Add(supercedecolumn);
         }
 

+ 2 - 2
InABox.DynamicGrid/DynamicEntityFormGrid.cs

@@ -24,9 +24,9 @@ namespace InABox.DynamicGrid
             OnBeforeSave += BeforeSave;
             OnCustomiseEditor += DynamicEntityFormGrid_OnCustomiseEditor;
 
-            ActionColumns.Add(new DynamicActionColumn(EditImage, EditClick));
+            ActionColumns.Add(new DynamicImageColumn(EditImage, EditClick));
             if (DynamicGridUtils.PreviewReport != null)
-                ActionColumns.Add(new DynamicActionColumn(PrintImage, PrintClick));
+                ActionColumns.Add(new DynamicImageColumn(PrintImage, PrintClick));
             HiddenColumns.Add(x => x.FormCompleted);
             HiddenColumns.Add(x => x.Form.ID);
         }

+ 1 - 1
InABox.DynamicGrid/DynamicExportMappingGrid.cs

@@ -20,7 +20,7 @@ namespace InABox.DynamicGrid
 
             //Options.AddRange(DynamicGridOption.RecordCount);
 
-            ActionColumns.Add(new DynamicActionColumn(SelectedImage, SelectedAction));
+            ActionColumns.Add(new DynamicImageColumn(SelectedImage, SelectedAction));
             HiddenColumns.Add(x => x.Key);
         }
 

+ 132 - 76
InABox.DynamicGrid/DynamicGrid.cs

@@ -940,7 +940,8 @@ namespace InABox.DynamicGrid
                 row[scol] = corerow[column.ColumnName];
             }
 
-            for (var i = 0; i < ActionColumns.Count; i++) row[string.Format("ActionColumn{0}", i)] = ActionColumns[i].Image.Invoke(corerow);
+            for (var i = 0; i < ActionColumns.Count; i++) 
+                row[string.Format("ActionColumn{0}", i)] = ActionColumns[i].Data(corerow);
         }
 
         private void DataGrid_QueryRowHeight(object? sender, QueryRowHeightEventArgs e)
@@ -1343,61 +1344,107 @@ namespace InABox.DynamicGrid
                     //String sColName = String.Format("ActionColumn{0}{1}", i, position == DynamicActionColumnPosition.Start ? "L" : "R");
                     var sColName = string.Format("ActionColumn{0}", i);
                     gridRowResizingOptions.ExcludeColumns.Add(sColName);
-
-                    var newcol = new GridImageColumn();
-                    newcol.MappingName = sColName;
-                    //newcol.Stretch = Stretch.Uniform;
-                    newcol.Width = column.Width == 0 ? DataGrid.RowHeight : column.Width;
-                    newcol.Padding = new Thickness(4);
-                    newcol.ImageHeight = DataGrid.RowHeight - 8;
-                    newcol.ImageWidth = DataGrid.RowHeight - 8;
-                    newcol.ColumnSizer = GridLengthUnitType.None;
-                    newcol.HeaderText = column.HeaderText;
-                    newcol.AllowFiltering = column.Filters != null && column.Filters.Any();
-                    newcol.AllowSorting = false;
-                    newcol.FilterRowOptionsVisibility = Visibility.Collapsed;
-                    newcol.ShowToolTip = column.ToolTip != null;
-
-
-                    var style = new Style();
-                    style.Setters.Add(new Setter(BackgroundProperty, new SolidColorBrush(Colors.Gainsboro)));
-                    style.Setters.Add(new Setter(IsEnabledProperty, false));
-                    newcol.FilterRowCellStyle = style;
-
                     
-                    var headstyle = new Style(typeof(GridHeaderCellControl));
-                    headstyle.Setters.Add(new Setter(BackgroundProperty, new SolidColorBrush(Colors.Gainsboro)));
-                    headstyle.Setters.Add(new Setter(ForegroundProperty, new SolidColorBrush(Colors.Black)));
-                    headstyle.Setters.Add(new Setter(FontSizeProperty, 12D));
-                    if (!string.IsNullOrWhiteSpace(column.HeaderText))
+                    if (column is DynamicImageColumn imgcol)
                     {
-                        //headstyle.Setters.Add(new Setter(LayoutTransformProperty, new RotateTransform(270.0F)));
-                        headstyle.Setters.Add(new Setter(BorderThicknessProperty, new Thickness(0.0, 0.0, 0, 0)));
-                        headstyle.Setters.Add(new Setter(MarginProperty, new Thickness(0, 0, 0.75, 0.75)));
-                        headstyle.Setters.Add(new Setter(TemplateProperty, Application.Current.Resources["VerticalColumnHeader"] as ControlTemplate));
-                    }
-                    else
-                    {
-                        var image = column.Image?.Invoke(null);
-                        if (image != null)
+                        var newcol = new GridImageColumn();
+                        newcol.MappingName = sColName;
+                        //newcol.Stretch = Stretch.Uniform;
+                        newcol.Width = column.Width == 0 ? DataGrid.RowHeight : column.Width;
+                        newcol.Padding = new Thickness(4);
+                        newcol.ImageHeight = DataGrid.RowHeight - 8;
+                        newcol.ImageWidth = DataGrid.RowHeight - 8;
+                        newcol.ColumnSizer = GridLengthUnitType.None;
+                        newcol.HeaderText = column.HeaderText;
+                        
+                        ApplyFilterStyle(newcol, true);
+                        
+                        newcol.ShowToolTip = column.ToolTip != null;
+                        
+                        var style = new Style();
+                        style.Setters.Add(new Setter(BackgroundProperty, new SolidColorBrush(Colors.Gainsboro)));
+                        style.Setters.Add(new Setter(IsEnabledProperty, false));
+                        newcol.FilterRowCellStyle = style;
+                        
+                        var headstyle = new Style(typeof(GridHeaderCellControl));
+                        headstyle.Setters.Add(new Setter(BackgroundProperty, new SolidColorBrush(Colors.Gainsboro)));
+                        headstyle.Setters.Add(new Setter(ForegroundProperty, new SolidColorBrush(Colors.Black)));
+                        headstyle.Setters.Add(new Setter(FontSizeProperty, 12D));
+                        if (!string.IsNullOrWhiteSpace(column.HeaderText))
                         {
-                            var template = new ControlTemplate(typeof(GridHeaderCellControl));
-                            var border = new FrameworkElementFactory(typeof(Border));
-                            border.SetValue(Border.BackgroundProperty, new SolidColorBrush(Colors.Gainsboro));
-                            border.SetValue(Border.PaddingProperty, new Thickness(4));
-                            border.SetValue(MarginProperty, new Thickness(0, 0, 1, 1));
-                            var img = new FrameworkElementFactory(typeof(Image));
-                            img.SetValue(Image.SourceProperty, image);
-                            border.AppendChild(img);
-                            template.VisualTree = border;
-                            headstyle.Setters.Add(new Setter(TemplateProperty, template));
+                            //headstyle.Setters.Add(new Setter(LayoutTransformProperty, new RotateTransform(270.0F)));
+                            headstyle.Setters.Add(new Setter(BorderThicknessProperty, new Thickness(0.0, 0.0, 0, 0)));
+                            headstyle.Setters.Add(new Setter(MarginProperty, new Thickness(0, 0, 0.75, 0.75)));
+                            headstyle.Setters.Add(new Setter(TemplateProperty,
+                                Application.Current.Resources["VerticalColumnHeader"] as ControlTemplate));
+                        }
+                        else
+                        {
+                            var image = imgcol.Image?.Invoke(null);
+                            if (image != null)
+                            {
+                                var template = new ControlTemplate(typeof(GridHeaderCellControl));
+                                var border = new FrameworkElementFactory(typeof(Border));
+                                border.SetValue(Border.BackgroundProperty, new SolidColorBrush(Colors.Gainsboro));
+                                border.SetValue(Border.PaddingProperty, new Thickness(4));
+                                border.SetValue(MarginProperty, new Thickness(0, 0, 1, 1));
+                                var img = new FrameworkElementFactory(typeof(Image));
+                                img.SetValue(Image.SourceProperty, image);
+                                border.AppendChild(img);
+                                template.VisualTree = border;
+                                headstyle.Setters.Add(new Setter(TemplateProperty, template));
+                            }
                         }
-                    }
 
-                    newcol.HeaderStyle = headstyle;
+                        newcol.HeaderStyle = headstyle;
 
-                    DataGrid.Columns.Add(newcol);
-                    ColumnList.Add(column);
+                        DataGrid.Columns.Add(newcol);
+                        ColumnList.Add(column);
+                    }
+                    else if (column is DynamicTextColumn txtCol)
+                    {
+                        
+                        var newcol = new GridTextColumn();
+                        gridRowResizingOptions.ExcludeColumns.Add(sColName);
+                        newcol.TextWrapping = TextWrapping.NoWrap;
+                        
+                        newcol.TextAlignment = txtCol.Alignment == Alignment.NotSet
+                            ? TextAlignment.Left
+                            : txtCol.Alignment == Alignment.BottomLeft || txtCol.Alignment == Alignment.MiddleLeft ||
+                              txtCol.Alignment == Alignment.TopLeft
+                                ? TextAlignment.Left
+                                : txtCol.Alignment == Alignment.BottomCenter || txtCol.Alignment == Alignment.MiddleCenter ||
+                                  txtCol.Alignment == Alignment.TopCenter
+                                    ? TextAlignment.Center
+                                    : TextAlignment.Right;
+                        
+                        newcol.AllowEditing = false;
+                        newcol.UpdateTrigger = UpdateSourceTrigger.PropertyChanged;
+                        newcol.MappingName = sColName;
+                        newcol.Width = column.Width == 0 ? DataGrid.RowHeight : column.Width;
+                        newcol.ColumnSizer = GridLengthUnitType.None;
+                        newcol.HeaderText = column.HeaderText;
+                        newcol.AllowFiltering = column.Filters != null && column.Filters.Any();
+                        newcol.AllowSorting = false;
+                        newcol.FilterRowOptionsVisibility = Visibility.Collapsed;
+                        newcol.ShowToolTip = column.ToolTip != null;
+                        
+                        var style = new Style();
+                        style.Setters.Add(new Setter(BackgroundProperty, new SolidColorBrush(Colors.Gainsboro)));
+                        style.Setters.Add(new Setter(IsEnabledProperty, false));
+                        newcol.FilterRowCellStyle = style;
+                        
+                        var headstyle = new Style(typeof(GridHeaderCellControl));
+                        headstyle.Setters.Add(new Setter(BackgroundProperty, new SolidColorBrush(Colors.Gainsboro)));
+                        headstyle.Setters.Add(new Setter(ForegroundProperty, new SolidColorBrush(Colors.Black)));
+                        headstyle.Setters.Add(new Setter(FontSizeProperty, 12D));
+                        newcol.HeaderStyle = headstyle;
+
+                        DataGrid.Columns.Add(newcol);
+                        ColumnList.Add(column);                        
+                    }
+
+                    
                 }
             }
         }
@@ -1648,29 +1695,7 @@ namespace InABox.DynamicGrid
                         : HorizontalAlignment.Right;
 
 
-                    var filterstyle = new Style();
-                    if (filtering)
-                    {
-                        filterstyle.Setters.Add(new Setter(BackgroundProperty, BaseDynamicGrid.FilterBackground));
-                        newcol.ImmediateUpdateColumnFilter = true;
-                        newcol.ColumnFilter = ColumnFilter.Value;
-                        newcol.FilterRowCondition = FilterRowCondition.Contains;
-                        newcol.FilterRowOptionsVisibility = Visibility.Collapsed;
-                        newcol.AllowBlankFilters = true;
-                        newcol.AllowSorting = CanSort();
-                    }
-                    else
-                    {
-                        filterstyle.Setters.Add(new Setter(BackgroundProperty, new SolidColorBrush(Colors.Gainsboro)));
-                        filterstyle.Setters.Add(new Setter(IsEnabledProperty, false));
-                        newcol.ColumnFilter = ColumnFilter.Value;
-                        newcol.AllowFiltering = false;
-                        newcol.AllowSorting = false;
-                        newcol.FilterRowEditorType = "TextBox";
-                        newcol.FilterRowOptionsVisibility = Visibility.Collapsed;
-                    }
-
-                    newcol.FilterRowCellStyle = filterstyle;
+                    ApplyFilterStyle(newcol,filtering);
 
 
                     var headstyle = new Style(typeof(GridHeaderCellControl));
@@ -1739,6 +1764,33 @@ namespace InABox.DynamicGrid
             ResizeColumns(DataGrid, DataGrid.ActualWidth - 2, DataGrid.ActualHeight - 2);
         }
 
+        private void ApplyFilterStyle(GridColumn column, bool filtering)
+        {
+            var filterstyle = new Style();
+            if (filtering)
+            {
+                filterstyle.Setters.Add(new Setter(BackgroundProperty, BaseDynamicGrid.FilterBackground));
+                column.ImmediateUpdateColumnFilter = true;
+                column.ColumnFilter = ColumnFilter.Value;
+                column.FilterRowCondition = FilterRowCondition.Contains;
+                column.FilterRowOptionsVisibility = Visibility.Collapsed;
+                column.AllowBlankFilters = true;
+                column.AllowSorting = CanSort();
+            }
+            else
+            {
+                filterstyle.Setters.Add(new Setter(BackgroundProperty, new SolidColorBrush(Colors.Gainsboro)));
+                filterstyle.Setters.Add(new Setter(IsEnabledProperty, false));
+                column.ColumnFilter = ColumnFilter.Value;
+                column.AllowFiltering = false;
+                column.AllowSorting = false;
+                column.FilterRowEditorType = "TextBox";
+                column.FilterRowOptionsVisibility = Visibility.Collapsed;
+            }
+
+            column.FilterRowCellStyle = filterstyle;
+        }
+
         #endregion
 
         #region Refresh / Reload
@@ -1974,7 +2026,7 @@ namespace InABox.DynamicGrid
         {
             var rowdata = new List<object?>(row.Values);
             foreach (var ac in ActionColumns)
-                rowdata.Add(ac.Image.Invoke(row));
+                rowdata.Add(ac.Data(row));
 
             var datarow = DataGridItems.Rows[row.Index];
             for (var i = 0; i < rowdata.Count; i++)
@@ -1999,7 +2051,11 @@ namespace InABox.DynamicGrid
             }
 
             for (var i = 0; i < ActionColumns.Count; i++)
-                result.Columns.Add(string.Format("ActionColumn{0}", i), typeof(BitmapImage));
+                result.Columns.Add(string.Format("ActionColumn{0}", i), 
+                    ActionColumns[i] is DynamicImageColumn 
+                        ? typeof(BitmapImage) 
+                        : typeof(String)
+                );
 
             foreach (var row in Data.Rows)
             {
@@ -2059,7 +2115,7 @@ namespace InABox.DynamicGrid
         {
             var rowdata = new List<object?>(row.Values);
             foreach (var ac in ActionColumns)
-                rowdata.Add(ac.Image.Invoke(row));
+                rowdata.Add(ac.Data(row));
 
             try
             {

+ 1 - 1
InABox.DynamicGrid/DynamicImportGrid.cs

@@ -28,7 +28,7 @@ namespace InABox.DynamicGrid
         public DynamicImportGrid()
         {
             Options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.ShowHelp);
-            ActionColumns.Add(new DynamicActionColumn(ImportImage, ImportAction));
+            ActionColumns.Add(new DynamicImageColumn(ImportImage, ImportAction));
             HiddenColumns.Add(x => x.EntityName);
             HiddenColumns.Add(x => x.ImporterDescription);
             HiddenColumns.Add(x => x.FileName);

+ 2 - 2
InABox.DynamicGrid/DynamicImportMappingGrid.cs

@@ -25,11 +25,11 @@ namespace InABox.DynamicGrid
             Items = new List<ImportMapping>();
             Options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.DirectEdit);
 
-            ActionColumns.Add(new DynamicActionColumn(KeyImage, KeyAction) { Position = DynamicActionColumnPosition.Start, ToolTip = KeyToolTip });
+            ActionColumns.Add(new DynamicImageColumn(KeyImage, KeyAction) { Position = DynamicActionColumnPosition.Start, ToolTip = KeyToolTip });
             HiddenColumns.Add(x => x.Key);
 
 
-            ActionColumns.Add(new DynamicActionColumn(LookupImage, LookupAction) { ToolTip = LookupToolTip });
+            ActionColumns.Add(new DynamicImageColumn(LookupImage, LookupAction) { ToolTip = LookupToolTip });
             HiddenColumns.Add(x => x.Lookup);
         }
 

+ 2 - 2
InABox.DynamicGrid/DynamicOneToManyGrid.cs

@@ -57,9 +57,9 @@ namespace InABox.DynamicGrid
             /*var t = typeof(TMany).BaseType;
             if (t != null && t.IsConstructedGenericType && t.GetGenericTypeDefinition() == typeof(EntityForm<,>))
             {
-                ActionColumns.Add(new DynamicActionColumn(QAEditImage, QAEditClick));
+                ActionColumns.Add(new DynamicImageColumn(QAEditImage, QAEditClick));
                 if (DynamicGridUtils.PreviewReport != null)
-                    ActionColumns.Add(new DynamicActionColumn(QAPrintImage, QAPrintClick));
+                    ActionColumns.Add(new DynamicImageColumn(QAPrintImage, QAPrintClick));
                 HiddenColumns.Add(x => (x as IDigitalFormInstance).FormData);
                 HiddenColumns.Add(x => (x as IDigitalFormInstance).FormCompleted);
                 HiddenColumns.Add(x => (x as IDigitalFormInstance).FormCompletedBy.ID);

+ 1 - 1
InABox.DynamicGrid/DynamicRowMovementColumn.cs

@@ -13,7 +13,7 @@ namespace InABox.DynamicGrid
         Down
     }
 
-    public class DynamicRowMovementColumn : DynamicActionColumn
+    public class DynamicRowMovementColumn : DynamicImageColumn
     {
         private readonly BitmapImage downarrow = Resources.downarrow.AsBitmapImage();
         private readonly Func<int, int, bool> Swap;

+ 4 - 4
InABox.Reports/ReportGrid.cs

@@ -46,13 +46,13 @@ public class Report
             Options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.ShowHelp);
             //OnAddItem += ReportGrid_OnAddItem;
             //OnEditItem += ReportGrid_OnEditItem;
-            ActionColumns.Add(new DynamicActionColumn(Properties.Resources.load.AsBitmapImage(), ImportClick)
+            ActionColumns.Add(new DynamicImageColumn(Properties.Resources.load.AsBitmapImage(), ImportClick)
                 { Position = DynamicActionColumnPosition.Start });
-            ActionColumns.Add(new DynamicActionColumn(Properties.Resources.save.AsBitmapImage(), ExportClick)
+            ActionColumns.Add(new DynamicImageColumn(Properties.Resources.save.AsBitmapImage(), ExportClick)
                 { Position = DynamicActionColumnPosition.Start });
 
-            ActionColumns.Add(new DynamicActionColumn(ScriptImage, ScriptClick));
-            ActionColumns.Add(new DynamicActionColumn(Properties.Resources.pencil.AsBitmapImage(), DesignClick));
+            ActionColumns.Add(new DynamicImageColumn(ScriptImage, ScriptClick));
+            ActionColumns.Add(new DynamicImageColumn(Properties.Resources.pencil.AsBitmapImage(), DesignClick));
             HiddenColumns.Add(x => x.IsRDL);
             HiddenColumns.Add(x => x.Script);
         }