| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | using PunkHPX8_Core;using MECF.Framework.Common.DataCenter;using Prism.Commands;using Prism.Mvvm;using System;using System.Collections.ObjectModel;using System.Windows.Input;using System.Xml;namespace PunkHPX8_MainPages.ViewModels{    public class SignalTowerConfigViewModel : BindableBase    {        #region 内部变量        /// <summary>        /// SignalTowerDatas        /// </summary>        private ObservableCollection<SignalTowerItem> _signalTowerDatas = new ObservableCollection<SignalTowerItem>();        /// <summary>        /// SignalTower XML file        /// </summary>        private XmlDocument _xmlSignalTower;        #endregion        #region 属性        /// <summary>        /// SignalTowerDatas        /// </summary>        public ObservableCollection<SignalTowerItem> SignalTowerDatas        {            get { return _signalTowerDatas; }            set            {                SetProperty(ref _signalTowerDatas, value);            }        }        #endregion        #region 命令        /// <summary>        /// Save Command        /// </summary>        public ICommand SaveConfigCommand { get; set; }        #endregion        /// <summary>        /// 构造函数        /// </summary>        public SignalTowerConfigViewModel()        {            SaveConfigCommand = new DelegateCommand<object>(OnSaveConfig);            _xmlSignalTower = new XmlDocument();            string contentSignal = QueryDataClient.Instance.Service.GetTypedConfigContent("SignalTower", "");            _xmlSignalTower.LoadXml(contentSignal);            var items = _xmlSignalTower.SelectNodes($"STEvents/STEvent");            foreach (var item in items)            {                XmlElement element = item as XmlElement;                SignalTowerItem stItem = new SignalTowerItem();                stItem.Name = element.GetAttribute("name");                stItem.IsRed = string.Compare(element.GetAttribute("Red"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;                stItem.IsRedBlinking = string.Compare(element.GetAttribute("Red"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;                stItem.IsYellow = string.Compare(element.GetAttribute("Yellow"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;                stItem.IsYellowBlinking = string.Compare(element.GetAttribute("Yellow"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;                stItem.IsGreen = string.Compare(element.GetAttribute("Green"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;                stItem.IsGreenBlinking = string.Compare(element.GetAttribute("Green"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;                stItem.IsBlue = string.Compare(element.GetAttribute("Blue"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;                stItem.IsBlueBlinking = string.Compare(element.GetAttribute("Blue"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;                stItem.IsBuzzer = string.Compare(element.GetAttribute("Buzzer"), "on", StringComparison.CurrentCultureIgnoreCase) == 0;                stItem.IsBuzzerBlinking = string.Compare(element.GetAttribute("Buzzer"), "blinking", StringComparison.CurrentCultureIgnoreCase) == 0;                SignalTowerDatas.Add(stItem);            }        }        /// <summary>        /// 加载数据        /// </summary>        public void LoadData(string systemName)        {        }        /// <summary>        /// 隐藏        /// </summary>        public void Hide()        {        }        #region 指令Action        /// <summary>        /// 保存设置        /// </summary>        /// <param name="param"></param>        private void OnSaveConfig(object param)        {            var nodeGroup = _xmlSignalTower.SelectSingleNode($"STEvents");            var nodeItem = _xmlSignalTower.SelectNodes($"STEvents/STEvent");            foreach (var nodeGroupChildNode in nodeItem)            {                var node = nodeGroupChildNode as XmlElement;                nodeGroup.RemoveChild(node);            }            foreach (var item in SignalTowerDatas)            {                var node = _xmlSignalTower.CreateElement("STEvent");                node.SetAttribute("name", item.Name);                node.SetAttribute("Red", item.IsRed ? "on" : item.IsRedBlinking ? "blinking" : "off");                node.SetAttribute("Yellow", item.IsYellow ? "on" : item.IsYellowBlinking ? "blinking" : "off");                node.SetAttribute("Blue", item.IsBlue ? "on" : item.IsBlueBlinking ? "blinking" : "off");                node.SetAttribute("Green", item.IsGreen ? "on" : item.IsGreenBlinking ? "blinking" : "off");                node.SetAttribute("Buzzer", item.IsBuzzer ? "on" : item.IsBuzzerBlinking ? "blinking" : "off");                nodeGroup.AppendChild(node);            }            QueryDataClient.Instance.Service.SetTypedConfigContent("SignalTower", "", _xmlSignalTower.InnerXml);        }        #endregion    }}
 |