using HMI.Core.Entity; using HMI.Core.Util; using HMI.UI.DpUtil; using HMI.UI.Util; using Panuon.WPF.UI; using System; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; namespace HMI.ParameterManage { /// /// ModalWindow.xaml 的交互逻辑 /// public partial class SettingModal : WindowX { public SettingModal() { this.DataContext = this; InitializeComponent(); } public ParameterData Data { get; set; } private ObservableCollection Datasource; private bool _isProcessing; protected override void OnClosing(CancelEventArgs e) { //Press Continue Button if (DialogResult == true) { if (_isProcessing) { e.Cancel = true; return; } var okButton = WindowXModalDialog.GetOKButton(this); try { _isProcessing = true; ButtonHelper.SetIsPending(okButton, true); if (!ValidateForm()) { e.Cancel = true; return; } SaveOrUpdateParameter(Data); } catch (Exception ex) { ToastHelper.Error(this, $"Error: {ex.Message}"); e.Cancel = true; return; } finally { _isProcessing = false; ButtonHelper.SetIsPending(okButton, false); } } base.OnClosing(e); } public bool ValidateName(object value, out string err) { err = 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; } return true; } private void SaveOrUpdateParameter(ParameterData data) { } private bool ValidateForm() { bool flag = FormGroupHelper.ValidateForm(formPanel); if (flag) { Data.Name = TbName.Text; Data.Type = CbType.Text; Data.Value = TbValue.Text; Data.Unit = TbUnit.Text; Data.Description = TbDescription.Text; Data.PGroup = TbGroup.Text; Data.Source = TbSource.Text; } return flag; } public bool? Open(ParameterData data, ObservableCollection datasource) { Datasource = datasource; Data = data; TbName.Text = Data.Name; CbType.SelectedValue = Data.Type; TbValue.Text = Data.Value; TbUnit.Text = Data.Unit; TbDescription.Text = Data.Description; TbGroup.Text = Data.PGroup; TbSource.Text = Data.Source; return this.ShowDialog(); } } }