| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 | using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using MECF.Framework.Common.OperationCenter;using Prism.Commands;using Prism.Mvvm;using Venus_MainPages.Unity;//using  Venus_MainPages.Unity.SystemConfig;namespace Venus_MainPages.ViewModels{    public class SystemConfigViewModel:BindableBase    {        #region 私有字段        private List<ConfigNode> _ConfigNodes = new List<ConfigNode>();        private List<ConfigItem> _configItems = null;        string _CurrentNodeName = string.Empty;        #endregion        #region 属性        public List<ConfigNode> ConfigNodes        {            get { return _ConfigNodes; }            set { _ConfigNodes = value; RaisePropertyChanged("ConfigNodes"); }        }        public List<ConfigItem> ConfigItems        {            get { return _configItems; }            set { _configItems = value; RaisePropertyChanged("ConfigItems"); }        }        #region 命令        private DelegateCommand<object> _TreeViewSelectedItemChangedCmd;        public DelegateCommand<object> TreeViewSelectedItemChangedCmd =>            _TreeViewSelectedItemChangedCmd ?? (_TreeViewSelectedItemChangedCmd = new DelegateCommand<object>(TreeViewSelectedItemChanged));        #endregion        #endregion        #region 命令        private DelegateCommand<object> _SetValueCommand;        public DelegateCommand<object> SetValueCommand =>            _SetValueCommand ?? (_SetValueCommand = new DelegateCommand<object>(SetValue));                  #endregion        public SystemConfigViewModel()        {            ConfigNodes = SystemConfigProvider.Instance.GetConfigTree().SubNodes;        }        //protected override void OnInitialize()        //{        //    base.OnInitialize();        //    ConfigNodes = SystemConfigProvider.Instance.GetConfigTree().SubNodes;        //}        private void TreeViewSelectedItemChanged(object node)        {           var   node2 = (ConfigNode)node;            _CurrentNodeName = string.IsNullOrEmpty(node2.Path) ? node2.Name : $"{node2.Path}.{node2.Name}";            ConfigItems = node2.Items;            GetDataOfConfigItems();        }        private void GetDataOfConfigItems()        {            if (ConfigItems == null)                return;            for (int i = 0; i < ConfigItems.Count; i++)            {                string key = String.Format("{0}{1}{2}", _CurrentNodeName, ".", ConfigItems[i].Name);                ConfigItems[i].CurrentValue = SystemConfigProvider.Instance.GetValueByName(key);                if (ConfigItems[i].Type == DataType.Bool)                {                    bool value;                    if (bool.TryParse(ConfigItems[i].CurrentValue, out value))                        ConfigItems[i].BoolValue = value;                }                else                    ConfigItems[i].StringValue = ConfigItems[i].CurrentValue;            }        }        private void SetValue(Object myitem)        {            //key :System.IsSimulatorMode             //value: true or false 都是字符串            //input check            var item = (ConfigItem)myitem;            string value;            if (item.Type == DataType.Bool)            {                value = item.BoolValue.ToString().ToLower();            }            else            {                if (item.TextSaved)                    return;                if (item.Type == DataType.Int)                {                    int iValue;                    if (int.TryParse(item.StringValue, out iValue))                    {                        if (!double.IsNaN(item.Max) && !double.IsNaN(item.Min))                        {                            if (iValue > item.Max || iValue < item.Min)                            {                                //DialogBox.ShowWarning(string.Format("The value should be between {0}  and {1}.", ((int)item.Min).ToString(), ((int)item.Max).ToString()));                                return;                            }                        }                    }                    else                    {                        //DialogBox.ShowWarning("Please input valid data.");                        return;                    }                    value = item.StringValue;                }                else if (item.Type == DataType.Double)                {                    double fValue;                    if (double.TryParse(item.StringValue, out fValue))                    {                        if (!double.IsNaN(item.Max) && !double.IsNaN(item.Min))                        {                            if (fValue > item.Max || fValue < item.Min)                            {                                //DialogBox.ShowWarning(string.Format("The value should be between {0}  and {1}.", item.Min.ToString(), item.Max.ToString()));                                return;                            }                        }                    }                    else                    {                        //DialogBox.ShowWarning("Please input valid data.");                        return;                    }                    value = item.StringValue;                }                else                    value = item.StringValue;            }            string key = String.Format("{0}{1}{2}", _CurrentNodeName, ".", item.Name);            InvokeClient.Instance.Service.DoOperation("System.SetConfig", key, value);            item.TextSaved = true;            Reload();        }        public void Reload()        {            GetDataOfConfigItems();        }        public void SaveAll()        {            if (ConfigItems == null)                return;            ConfigItems.ForEach(item => SetValue(item));        }            }}
 |