123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- 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);
- 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
- }
- }
|