private void AddArea(object sender, RoutedEventArgs e)
 {
     lock (_lock)
     {
         if (_areas == null)
             _areas = new List<Business.Area>();
         AreaSetting setting = new AreaSetting();
         if (setting.ShowDialog() == true)
         {
             string name = setting.Area_name;
             Area temp = new Area(name);
             _areas.Add(temp);//将Area类类型的变量添加到List表中
             //更新
             Refresh();
         }       
     }
 }
        /// <summary>
        /// 加载配置文件
        /// </summary>
        private void LoadConfig()
        {
            try
            {
                XmlDocument config = new XmlDocument();
                config.Load(_configFile);

                XmlNode root = config.SelectSingleNode("Root");

                #region LoadNormalCommand
                XmlNodeList areas = root.SelectNodes("Area");
                _areas.Clear();
                foreach (XmlNode area in areas)
                {
                    string areaName = area.SelectSingleNode("AreaName").InnerText;
                    Area tempArea = new Area(areaName);
                    _areas.Add(tempArea);

                    XmlNodeList actions = area.SelectNodes("Action");
                    foreach (XmlNode action in actions)
                    {
                        string actionName = action.SelectSingleNode("ActionName").InnerText;
                        string actionReceiveData = action.SelectSingleNode("ActionReceiveData").InnerText;
                        UserAction useraction = new UserAction(actionName,actionReceiveData);
                        //tempArea.Actions.Add(useraction);
                        _userAction.Add(useraction);
                        XmlNodeList oprations = action.SelectNodes("Operation");
                        foreach (XmlNode operation in oprations)
                        {
                            string operationName = operation.SelectSingleNode("OperationName").InnerText;
                            string operationTypeString = operation.SelectSingleNode("OperationType").InnerText;
                            OprationType operationType = (OprationType)Enum.Parse(typeof(OprationType),operationTypeString,true);
                            XmlNode operationSetting = operation.SelectSingleNode("OperationSetting");
                            object setting = null;
                            if (operationType == OprationType.Com)
                            {
                                ComSetting cs = new ComSetting();
                                cs.ComNumber = operationSetting.SelectSingleNode("ComNumber").InnerText;
                                cs.BaudRate = int.Parse(operationSetting.SelectSingleNode("BaudRate").InnerText);
                                cs.DataBits = int.Parse(operationSetting.SelectSingleNode("DataBit").InnerText);
                                cs.StopBits = int.Parse(operationSetting.SelectSingleNode("StopBit").InnerText);
                                cs.Parity = (Parity)Enum.Parse(typeof(Parity),operationSetting.SelectSingleNode("Parity").InnerText);

                                setting = cs;
                            }
                            else if (operationType == OprationType.TCP || operationType == OprationType.UDP)
                            {
                                NetworkSetting ns = new NetworkSetting();
                                ns.Ip = operationSetting.SelectSingleNode("IP").InnerText;
                                ns.Port = int.Parse(operationSetting.SelectSingleNode("Port").InnerText);
                                setting = ns;
                            }

                            string dataTypeString = operation.SelectSingleNode("OperationDataType").InnerText;
                            DataType dataType = (DataType)Enum.Parse(typeof(DataType),dataTypeString,true);
                            string data = operation.SelectSingleNode("OperationData").InnerText;
                            int time = int.Parse(operation.SelectSingleNode("OperationTime").InnerText);
                            UserOperation userOperation = new UserOperation(operationName,operationType,dataType,setting,data,time);
                            _userOperation.Add(userOperation);
                        }
                    }

                }
                _arealist.Refresh();
                #endregion
            }
            catch(Exception ex)
            {
                MessageBox.Show("未找到配置命令!");
                
            }

        }
 public void Delete(Area area)
 {
     lock (_lock)
     {
         if (_areas != null)
         {
             _areas.Remove(area);
         }
         Refresh();
     }
 }
        private void MoveDown(object sender, RoutedEventArgs e)
        {
            Area areaToSwap = null;
            for (int i = 0; i < AreaContains.Children.Count; i++)
            {
                if ((AreaContains.Children[i] as UserArea).IsSelected)
                {
                    areaToSwap = (AreaContains.Children[i] as UserArea).MyArea;
                    break;
                }
            }

            if (areaToSwap != null)
            {
                for (int i = 0; i < _areas.Count(); i++)
                {
                    if (_areas[i] == areaToSwap && i != _areas.Count - 1)
                    {
                        Area areatemp = new Area(_areas[i + 1].Name);
                        _areas[i+1] = areaToSwap;
                        _areas[i] = areatemp;

                        Refresh();
                        break;
                    }
                }
            }
        }