From c4a3f8db90530a727ffab77c3bb5bb7d782792bf Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期一, 25 八月 2025 15:50:27 +0800
Subject: [PATCH] 上传代码;

---
 HMI.UI/DpUtil/FormGroupHelper.cs |   28 ++++++++++++++++++++++++++--
 1 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/HMI.UI/DpUtil/FormGroupHelper.cs b/HMI.UI/DpUtil/FormGroupHelper.cs
index feda1f9..bdfd5bd 100644
--- a/HMI.UI/DpUtil/FormGroupHelper.cs
+++ b/HMI.UI/DpUtil/FormGroupHelper.cs
@@ -57,6 +57,11 @@
             {
                 if (child is FormGroup fg)
                 {
+                    if (fg.Visibility != Visibility.Visible)
+                    {
+                        ClearValue(fg);
+                        continue;
+                    }
                     fg.ValidateResult = ValidateResult.None;
                     fg.Message = null;
                     object content = fg.Content;
@@ -89,12 +94,31 @@
                 return elementCollection.Count > 0 ? GetValidateValue(elementCollection[0]) : null;
             if (content is TextBox tb) return tb.Text;
             if (content is CheckBox cb) return cb.IsChecked;
-            if (content is ComboBox cBox) return cBox.SelectedValue;
+            if (content is ComboBox cBox) return cBox.SelectedItem ?? cBox.SelectedValue ?? cBox.Text;
 
             if (content is Panel panel) return GetValidateValue(panel.Children);
-            if (content is NumberInput numberInput) return numberInput.Value;
+            if (content is Panuon.WPF.UI.NumberInput numberInput) return numberInput.Value;
             if (content is PasswordBox passwordInput) return passwordInput.Password;
             return null;
         }
+
+        private static void ClearValue(object content)
+        {
+            if (content == null) return;
+            if (content is UIElementCollection elementCollection && elementCollection.Count > 0)
+                ClearValue(elementCollection[0]);
+            if (content is TextBox tb) tb.Text = null;
+            if (content is CheckBox cb) cb.IsChecked = null;
+            if (content is ComboBox cBox)
+            {
+                cBox.SelectedItem = null;
+                cBox.SelectedValue = null;
+                cBox.Text = null;
+            }
+
+            if (content is Panel panel) ClearValue(panel.Children);
+            if (content is Panuon.WPF.UI.NumberInput numberInput) numberInput.Value = null;
+            if (content is PasswordBox passwordInput) passwordInput.Password = null;
+        }
     }
 }

--
Gitblit v1.9.1