Przeglądaj źródła

Fixed validation process for DynamicEditorForm

Kenric Nugteren 4 miesięcy temu
rodzic
commit
d4231b7ad0

+ 6 - 1
inabox.wpf/Dashboard/Editor/DynamicDashboardDataEditor.xaml.cs

@@ -67,10 +67,15 @@ public partial class DynamicDashboardDataEditor : UserControl, INotifyPropertyCh
 
     private void Button_Click(object sender, RoutedEventArgs e)
     {
+        if (!QueryEditor.Validate())
+        {
+            return;
+        }
+
         var item = QueryGrid.CreateItem();
         if (QueryGrid.EditItems([item]))
         {
-            QueryEditor.SaveItem(new CancelEventArgs());
+            QueryEditor.SaveItem(new CancelEventArgs(), validate: false);
             QueryGrid.DoChanged();
             QueryGrid.Refresh(false, true);
         }

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

@@ -191,7 +191,7 @@ public partial class DynamicEditorForm : ThemableChromelessWindow, IDynamicEdito
             }
         }
         if (Result == true)
-            Form.SaveItem(e);
+            Form.SaveItem(e, validate: false);
         SubPanelClosed?.Invoke(this);
     }
 

+ 16 - 2
inabox.wpf/DynamicGrid/DynamicEditorForm/EmbeddedDynamicEditorForm.xaml.cs

@@ -341,7 +341,7 @@ namespace InABox.DynamicGrid
             deb.Click();
         }
 
-        private void OKButton_Click(object sender, RoutedEventArgs e)
+        public bool Validate()
         {
             var errors = OnValidateData?.Invoke(this, Items);
 
@@ -351,6 +351,15 @@ namespace InABox.DynamicGrid
                     string.Format("The following errors have been found with your data!\nPlease correct them and try again.\n\n- {0}",
                         string.Join("\n- ", errors)),
                     "Validation Error");
+                return false;
+            }
+            return true;
+        }
+
+        private void OKButton_Click(object sender, RoutedEventArgs e)
+        {
+            if (!Validate())
+            {
                 return;
             }
             OnOK?.Invoke();
@@ -379,8 +388,13 @@ namespace InABox.DynamicGrid
             //Close();
         }
 
-        public void SaveItem(CancelEventArgs e)
+        public void SaveItem(CancelEventArgs e, bool validate = true)
         {
+            if(validate && !Validate())
+            {
+                e.Cancel = true;
+                return;
+            }
             OnSaveItem?.Invoke(this, e);
         }