alielie
2025-10-10 15bbd62b0b24b72c717ae91ab45348a2083ad04e
HMI.ParameterManage/SettingModal.xaml.cs
@@ -1,12 +1,16 @@
using HMI.Core.Util;
using HMI.ParameterManage.Entity;
using HMI.Core.Entity;
using HMI.Core.Util;
using HMI.UI.DpUtil;
using HMI.UI.Util;
using Microsoft.Win32;
using Panuon.WPF.UI;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows.Controls;
namespace HMI.ParameterManage
{
@@ -67,7 +71,8 @@
        public bool ValidateName(object value, out string err)
        {
            err = null;
            if (Datasource?.FirstOrDefault(e => e.Name == value.ToString()) != null)
            var data = Datasource?.FirstOrDefault(e => e.Name == value.ToString());
            if (data != null && data != Data)
            {
                err = this.lang("App.MustBeUnique", this.lang("Pm.Parameter.Name"));
                return false;
@@ -81,32 +86,111 @@
        private bool ValidateForm()
        {
            bool flag = FormGroupHelper.ValidateForm(formPanel);
            bool flag = FormGroupHelper.ValidateForm(formPanel, new Dictionary<string, object> {
                { "FgValue",GetTargetValue()}
            });
            if (flag)
            {
                Data.Name = TbName.Text;
                Data.Type = CbType.Text;
                Data.Value = TbValue.Text;
                Data.Value = GetTargetValue();
                Data.Unit = TbUnit.Text;
                Data.Description = TbDescription.Text;
                Data.PGroup = CbGroup.Text;
                Data.Source = CbSource.Text;
                Data.PGroup = TbGroup.Text;
                Data.Source = TbSource.Text;
            }
            return flag;
        }
        public bool? Open(ParameterData data, ObservableCollection<ParameterData> datasource)
        public bool? Open(ParameterData data, ObservableCollection<ParameterData> datasource,List<string> groups)
        {
            Datasource = datasource;
            Data = data;
            TbGroup.ItemsSource = groups;
            TbName.Text = Data.Name;
            CbType.SelectedValue = Data.Type;
            TbValue.Text = Data.Value;
            UpdateWindow(Data.Type);
            UpdateForm(Data);
            TbUnit.Text = Data.Unit;
            TbDescription.Text = Data.Description;
            CbGroup.SelectedValue = Data.PGroup;
            CbSource.SelectedValue = Data.Source;
            TbGroup.Text = Data.PGroup;
            TbSource.Text = Data.Source;
            return this.ShowDialog();
        }
        private string GetTargetValue()
        {
            if (CbType.Text == "Int" || Data.Type == "Double")
            {
                return NiNumberValue.Text;
            }
            else if (CbType.Text == "Bool")
            {
                return CbBoolValue.Text;
            }
            else
            {
                return TbStringValue.Text;
            }
        }
        private void UpdateForm(ParameterData data)
        {
            if (Data.Type == "Int" || Data.Type == "Int")
            {
                NiNumberValue.Text = Data.Value;
            }
            else if (Data.Type == "Bool")
            {
                CbBoolValue.SelectedValue = Data.Value;
            }
            else
            {
                TbStringValue.Text = Data.Value;
            }
        }
        private void UpdateWindow(string type)
        {
            if (type == "Int" || type == "Double")
            {
                NiNumberValue.Visibility = System.Windows.Visibility.Visible;
                StringValueGrid.Visibility = System.Windows.Visibility.Collapsed;
                CbBoolValue.Visibility = System.Windows.Visibility.Collapsed;
            }
            else if (type == "Bool")
            {
                NiNumberValue.Visibility = System.Windows.Visibility.Collapsed;
                StringValueGrid.Visibility = System.Windows.Visibility.Collapsed;
                CbBoolValue.Visibility = System.Windows.Visibility.Visible;
            }
            else
            {
                NiNumberValue.Visibility = System.Windows.Visibility.Collapsed;
                StringValueGrid.Visibility = System.Windows.Visibility.Visible;
                CbBoolValue.Visibility = System.Windows.Visibility.Collapsed;
            }
        }
        private void CbType_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            string val = null;
            if (e.AddedItems != null && e.AddedItems.Count > 0)
            {
                val = ((ComboBoxItem)e.AddedItems[0]).Content.ToString();
            }
            UpdateWindow(val);
        }
        private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            if (ofd.ShowDialog() == true)
            {
                TbStringValue.Text = ofd.FileName;
            }
        }
    }
}