瀏覽代碼

Fixed options loading on grids without any options set.

Kenric Nugteren 1 年之前
父節點
當前提交
349a333e75

+ 14 - 7
inabox.wpf/DynamicGrid/BaseDynamicGrid.cs

@@ -83,10 +83,16 @@ namespace InABox.DynamicGrid
 
         public event IDynamicGrid.ReconfigureEvent? OnReconfigure;
         
+        private bool _hasLoadedOptions = false;
+        
         public BaseDynamicGrid()
         {
             Options = new FluentList<DynamicGridOption>();
-            Options.OnChanged += OptionsChanged;
+            Options.OnChanged += (sender, args) =>
+            {
+                _hasLoadedOptions = true;
+                OptionsChanged();
+            };
             
             RowStyleSelector = GetRowStyleSelector();
             RowStyleSelector.GetStyle += (row, style) => GetRowStyle(row, style);
@@ -94,17 +100,13 @@ namespace InABox.DynamicGrid
             HiddenColumns = new List<Expression<Func<T, object?>>>();
         }
 
-        private void DefaultOptions_OnChanged(object sender, EventArgs args)
-        {
-            Reconfigure();
-        }
-
         /// <summary>
         /// Initialise things like custom buttons; called once during construction.
         /// </summary>
         protected abstract void Init();
 
         protected abstract void DoReconfigure(FluentList<DynamicGridOption> options);
+
         /// <summary>
         /// Configure custom buttons and options.
         /// </summary>
@@ -114,6 +116,11 @@ namespace InABox.DynamicGrid
             DoReconfigure(options);
             OnReconfigure?.Invoke(options);
             options.EndUpdate();
+            if (!_hasLoadedOptions)
+            {
+                _hasLoadedOptions = true;
+                OptionsChanged();
+            }
         }
         public void Reconfigure()
         {
@@ -206,7 +213,7 @@ namespace InABox.DynamicGrid
             OnPrintData?.Invoke(sender);
         }
 
-        protected abstract void OptionsChanged(object sender, EventArgs args);
+        protected abstract void OptionsChanged();
         
         public IEnumerable<TType> ExtractValues<TType>(Expression<Func<T, TType>> column, Selection selection)
         {

+ 2 - 2
inabox.wpf/DynamicGrid/DynamicDataGrid.cs

@@ -148,9 +148,9 @@ namespace InABox.DynamicGrid
 
         public string? ColumnsTag { get; set; }
 
-        protected override void OptionsChanged(object sender, EventArgs args)
+        protected override void OptionsChanged()
         {
-            base.OptionsChanged(sender, args);
+            base.OptionsChanged();
             if (MergeBtn != null)
                 MergeBtn.Visibility = Visibility.Collapsed;
             ShowFilterList = HasOption(DynamicGridOption.FilterRows);

+ 1 - 1
inabox.wpf/DynamicGrid/DynamicGrid.cs

@@ -669,7 +669,7 @@ namespace InABox.DynamicGrid
             set => DataGrid.HeaderRowHeight = value;
         }
 
-        protected override void OptionsChanged(object sender, EventArgs args)
+        protected override void OptionsChanged()
         {
             var reloadColumns = false;