Browse Source

Added a way to only update some child values for EnclosedEntity editors

Kenric Nugteren 3 tháng trước cách đây
mục cha
commit
d58313197d

+ 17 - 3
inabox.wpf/DynamicGrid/Editors/DynamicEnclosedEditorControl.cs

@@ -29,7 +29,11 @@ namespace InABox.DynamicGrid
             Focusable = false;
         }
 
-        protected virtual bool CheckChanged()
+        /// <summary>
+        /// Trigger a change notification.
+        /// </summary>
+        /// <param name="changedFields">A list of fields that have been changed. If empty, then it is assumed that all child fields are changed.</param>
+        protected virtual bool CheckChanged(params string[] changedFields)
         {
             //Logger.Send(LogType.Information, "", string.Format("{0}({1}).CheckChanged()", GetType().EntityName().Split('.').Last(), ColumnName));
             if (Loaded && !Updating)
@@ -39,9 +43,19 @@ namespace InABox.DynamicGrid
                 {
                     var values = new Dictionary<string, object?>();
                     var sColumn = string.IsNullOrEmpty(ColumnName) ? "" : ColumnName;
-                    foreach(var (k, v) in GetValues())
+                    if(changedFields.Length > 0)
                     {
-                        values[k] = v;
+                        foreach(var field in changedFields)
+                        {
+                            values[$"{ColumnName}.{field}"] = GetChildValue(field);
+                        }
+                    }
+                    else
+                    {
+                        foreach(var (k, v) in GetChildValues())
+                        {
+                            values[$"{ColumnName}.{k}"] = v;
+                        }
                     }
                     foreach (var key in OtherValues.Keys)
                         values[key] = OtherValues[key];