123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- using MECF.Framework.Common.DataCenter;
- using Prism.Commands;
- using Prism.Mvvm;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Xml;
- using Venus_Core;
- namespace Venus_MainPages.ViewModels
- {
- internal class SignalTowerConfigViewModel : BindableBase
- {
- #region 私有字段
- private ObservableCollection<SignalTowerItem> m_SignalTowerData = new ObservableCollection<SignalTowerItem>();
- private XmlDocument _xmlSignalTower;
- #endregion
- #region 属性
- public ObservableCollection<SignalTowerItem> SignalTowerData
- {
- get { return m_SignalTowerData; }
- set
- {
- SetProperty(ref m_SignalTowerData, value);
- }
- }
- #endregion
- #region 命令
- private DelegateCommand _SignalTowerDataCommand;
- public DelegateCommand SignalTowerDataCommand =>
- _SignalTowerDataCommand ?? (_SignalTowerDataCommand = new DelegateCommand(OnSignalTowerData));
- #endregion
- #region 构造函数
- public SignalTowerConfigViewModel()
- {
- _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;
- SignalTowerData.Add(stItem);
- }
- //string content = QueryDataClient.Instance.Service.GetTypedConfigContent("DataGroup", "");
- //XmlDocument xmlContent = new XmlDocument();
- //xmlContent.LoadXml(content);
-
- //var groups = xmlContent.SelectNodes($"DataGroupConfig/DataGroup[@name='SignalTower']/DataItem");
- //List<string> names = new List<string>();
- //foreach (var item in groups)
- //{
- // XmlElement element = item as XmlElement;
- // string name = element.GetAttribute("name");
- // names.Add(name);
- // if (SignalTowerData.FirstOrDefault(x => x.Name == name) == null)
- // {
- // SignalTowerData.Add(new SignalTowerItem() { Name = name, });
- // }
- //}
- }
- #endregion
- #region 命令方法
- private void OnSignalTowerData()
- {
- 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 SignalTowerData)
- {
- 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
- }
- }
|