Kenric Nugteren há 2 anos atrás
pai
commit
ab8bf4dc7b

+ 2 - 2
InABox.DynamicGrid/DynamicEditorGrid.xaml.cs

@@ -748,9 +748,9 @@ namespace InABox.DynamicGrid
                 }
         }
 
-        public void Load(DynamicEditorPages? pages = null)
+        public void Load(DynamicEditorPages pages)
         {
-            Pages = pages ?? new DynamicEditorPages();
+            Pages = pages;
 
             _columns = OnCustomiseColumns?.Invoke(this, null) ?? new DynamicGridColumns();
 

+ 2 - 2
InABox.DynamicGrid/EmbeddedDynamicEditorForm.xaml.cs

@@ -29,7 +29,7 @@ namespace InABox.DynamicGrid
 
         public delegate void CancelEvent();
 
-        public DynamicEditorPages? Pages { get; private set; }
+        public DynamicEditorPages Pages { get; private set; } = new();
 
         private BaseObject[] _items;
 
@@ -280,7 +280,7 @@ namespace InABox.DynamicGrid
 
             Editor.GetItems += () => _items;
 
-            Pages = pages;
+            Pages = pages ?? new DynamicEditorPages();
 
             if (Pages == null || Pages.Count == 0)
                 Editor.Margin = new Thickness(5, 5, 5, 0);

+ 17 - 0
InABox.DynamicGrid/FormDesigner/DynamicFormDesignGrid.cs

@@ -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);

+ 6 - 0
InABox.DynamicGrid/FormDesigner/DynamicFormDesignWindow.xaml.cs

@@ -50,6 +50,12 @@ namespace InABox.DynamicGrid
             remove => Grid.OnCreateVariable -= value;
         }
 
+        public event DynamicFormDesignGrid.EditVariableHandler OnEditVariable
+        {
+            add => Grid.OnEditVariable += value;
+            remove => Grid.OnEditVariable -= value;
+        }
+
         public string SaveLayout()
         {
             return Form.SaveLayout();