From 12e606635c42ea20f4b7c2bdda5204237a4b4c96 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期一, 02 三月 2026 16:14:49 +0800
Subject: [PATCH] 优化
---
HMI.UI/DpUtil/FormGroupHelper.cs | 45 ++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 40 insertions(+), 5 deletions(-)
diff --git a/HMI.UI/DpUtil/FormGroupHelper.cs b/HMI.UI/DpUtil/FormGroupHelper.cs
index feda1f9..bc45159 100644
--- a/HMI.UI/DpUtil/FormGroupHelper.cs
+++ b/HMI.UI/DpUtil/FormGroupHelper.cs
@@ -1,5 +1,6 @@
锘縰sing HMI.Core.Util;
using Panuon.WPF.UI;
+using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
@@ -49,7 +50,7 @@
DependencyProperty.RegisterAttached("ValidateMethod", typeof(ValidateMethodDelegate), typeof(FormGroupHelper),
new PropertyMetadata(null));
- public static bool ValidateForm(StackPanel fgPanel)
+ public static bool ValidateForm(StackPanel fgPanel, Dictionary<string, object> values = null)
{
if (fgPanel.Children == null) return true;
bool res = true;
@@ -57,10 +58,25 @@
{
if (child is FormGroup fg)
{
+ string fgName = fg.Name;
+ if (fg.Visibility != Visibility.Visible)
+ {
+ ClearValue(fg);
+ continue;
+ }
fg.ValidateResult = ValidateResult.None;
fg.Message = null;
- object content = fg.Content;
- object value = GetValidateValue(content);
+ object value;
+ if (values != null && values.ContainsKey(fgName))
+ {
+ value = values[fgName];
+ }
+ else
+ {
+ object content = fg.Content;
+ value = GetValidateValue(content);
+ }
+
if (GetIsRequired(fg) && (value == null || string.IsNullOrEmpty(value.ToString())))
{
fg.ValidateResult = ValidateResult.Error;
@@ -89,12 +105,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