|
@@ -140,8 +140,10 @@ namespace InABox.DynamicGrid
|
|
|
|
|
|
public event EditorValueChangedHandler? OnEditorValueChanged;
|
|
|
|
|
|
- public event OnReconfigureEditors? ReconfigureEditors;
|
|
|
+ public event OnAfterEditorValueChanged? OnAfterEditorValueChanged;
|
|
|
|
|
|
+ public event OnReconfigureEditors? OnReconfigureEditors;
|
|
|
+
|
|
|
public event OnDefineFilter? OnDefineFilter;
|
|
|
|
|
|
public event OnDefineLookup? OnDefineLookups;
|
|
@@ -162,7 +164,7 @@ namespace InABox.DynamicGrid
|
|
|
|
|
|
AddPages();
|
|
|
|
|
|
- DoReconfigureEditors();
|
|
|
+ ReconfigureEditors();
|
|
|
|
|
|
//MoveFocus(new TraversalRequest(FocusNavigationDirection.First));
|
|
|
//MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
|
|
@@ -842,7 +844,7 @@ namespace InABox.DynamicGrid
|
|
|
ConfigureEditors();
|
|
|
LoadEditorValues();
|
|
|
AddPages();
|
|
|
- DoReconfigureEditors();
|
|
|
+ ReconfigureEditors();
|
|
|
}, DispatcherPriority.Render);
|
|
|
}
|
|
|
}
|
|
@@ -856,7 +858,7 @@ namespace InABox.DynamicGrid
|
|
|
CreateLayout();
|
|
|
LoadEditorValues();
|
|
|
AddPages();
|
|
|
- DoReconfigureEditors();
|
|
|
+ ReconfigureEditors();
|
|
|
}
|
|
|
|
|
|
private void LoadEditor(string columnname, object value)
|
|
@@ -865,22 +867,31 @@ namespace InABox.DynamicGrid
|
|
|
|
|
|
private void EditorValueChanged(IDynamicEditorControl sender, Dictionary<string, object> values)
|
|
|
{
|
|
|
- //Logger.Send(LogType.Information, "", string.Format("DynamicEditorGrid.EditorValueChanged({0})", values.Keys.Count));
|
|
|
var changededitors = new Dictionary<string, object?>();
|
|
|
+
|
|
|
+ void ExtractChanged(Dictionary<String, object?>? columns)
|
|
|
+ {
|
|
|
+ if (columns != null)
|
|
|
+ foreach (var (change, value) in columns)
|
|
|
+ if (editors.Any(x => x.ColumnName.Equals(change)) && !changededitors.ContainsKey(change) && !change.Equals(sender.ColumnName))
|
|
|
+ changededitors[change] = value;
|
|
|
+ }
|
|
|
+
|
|
|
foreach (var key in values.Keys)
|
|
|
{
|
|
|
var changedcolumns = OnEditorValueChanged?.Invoke(this, key, values[key]);
|
|
|
- if (changedcolumns != null)
|
|
|
- foreach (var (change, value) in changedcolumns)
|
|
|
- if (editors.Any(x => x.ColumnName.Equals(change)) && !changededitors.ContainsKey(change) && !change.Equals(sender.ColumnName))
|
|
|
- changededitors[change] = value;
|
|
|
+ ExtractChanged(changedcolumns);
|
|
|
}
|
|
|
|
|
|
+ var afterchanged = OnAfterEditorValueChanged?.Invoke(this, sender.ColumnName);
|
|
|
+ ExtractChanged(afterchanged);
|
|
|
+
|
|
|
if (changededitors.Any())
|
|
|
LoadEditorValues(changededitors);
|
|
|
- DoReconfigureEditors();
|
|
|
+
|
|
|
+ ReconfigureEditors();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
private void LoadEditorValues(Dictionary<string, object?>? changededitors = null)
|
|
|
{
|
|
|
var columnnames = changededitors != null ? changededitors.Keys.ToArray() : editors.Select(x => x.ColumnName).ToArray();
|
|
@@ -919,9 +930,9 @@ namespace InABox.DynamicGrid
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public virtual void DoReconfigureEditors()
|
|
|
+ public virtual void ReconfigureEditors()
|
|
|
{
|
|
|
- ReconfigureEditors?.Invoke(this);
|
|
|
+ OnReconfigureEditors?.Invoke(this);
|
|
|
}
|
|
|
|
|
|
public void Load(string layoutname, DynamicEditorPages? pages = null)
|