using HMI.Core.Util; using HMI.IOMonitor.Entity; using HMI.UI; using HMI.UI.DpUtil; using HMI.UI.Util; using log4net; using Panuon.WPF.UI; using System; using System.Collections.ObjectModel; using System.ComponentModel; namespace HMI.IOMonitor { /// /// ModalWindow.xaml 的交互逻辑 /// public partial class IPManageModal : WindowX { public IPManageModal(ILog log) { this.log = log; this.DataContext = this; InitializeComponent(); } private ILog log; public string FilePath { get; private set; } public int DataIndex { get; private set; } public IPManage Data { get; private set; } public ObservableCollection Datasource { get; private set; } 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; } SaveOrUpdateData(); } catch (Exception ex) { log.Error("IPManage Form Submit Failed.", ex); ToastHelper.Error(this, $"Error: {ex.Message}"); e.Cancel = true; return; } finally { _isProcessing = false; ButtonHelper.SetIsPending(okButton, false); } } base.OnClosing(e); } public bool ValidateDBAddress(object value, out string err) { err = null; return true; } private bool ValidateForm() { bool flag = FormGroupHelper.ValidateForm(formPanel); if (flag) { Data.DItag =iTag.Text; Data.DQtag = qTag.Text; } return flag; } public bool? Open(int index, IPManage data, ObservableCollection dataSource, string filePath) { FilePath = filePath; DataIndex = index; Data = data; Datasource = dataSource; iTag.Text = Data.DItag; qTag.Text = Data.DQtag; return this.ShowDialog(); } private void SaveOrUpdateData() { if (DataIndex == -1) { InsertData(Data); } else { UpdateData(DataIndex, Data); } } public void InsertData(IPManage data) { Datasource.Add(data); XmlHelper.SerializeToXml(FilePath, Datasource); } public void UpdateData(int index, IPManage data) { Datasource[index] = data; XmlHelper.SerializeToXml(FilePath, Datasource); } } }