|
@@ -181,8 +181,10 @@ namespace InABox.DynamicGrid
|
|
|
public bool IsChanged => _isChanged;
|
|
|
|
|
|
public delegate DigitalFormVariable? CreateVariableHandler(Type fieldType);
|
|
|
+ public delegate bool EditVariableHandler(DigitalFormVariable variable);
|
|
|
|
|
|
public event CreateVariableHandler? OnCreateVariable;
|
|
|
+ public event EditVariableHandler? OnEditVariable;
|
|
|
|
|
|
public IList<DigitalFormVariable> Variables
|
|
|
{
|
|
@@ -783,10 +785,25 @@ namespace InABox.DynamicGrid
|
|
|
Render();
|
|
|
}
|
|
|
|
|
|
+ private void EditVariableClick(DFLayoutField field)
|
|
|
+ {
|
|
|
+ var variable = _variables.FirstOrDefault(x => x.Code == field.Name);
|
|
|
+ if (variable is null) return;
|
|
|
+
|
|
|
+ if(OnEditVariable?.Invoke(variable) == true)
|
|
|
+ {
|
|
|
+ field.LoadFromString(variable.Parameters);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private ContextMenu CreateElementContextMenu(FrameworkElement element, DFLayoutControl control)
|
|
|
{
|
|
|
var result = new ContextMenu();
|
|
|
result.Items.Add(CreateMenuItem("Edit Properties", control, ElementPropertiesClick));
|
|
|
+ if(OnEditVariable is not null && control is DFLayoutField field)
|
|
|
+ {
|
|
|
+ result.Items.Add(CreateMenuItem("Edit Variable", field, EditVariableClick));
|
|
|
+ }
|
|
|
result.Items.Add(new Separator());
|
|
|
result.Items.Add(CreateMenuItem("Delete Item", control, DeleteElementClick));
|
|
|
element.SetValue(ContextMenuProperty, result);
|