/// <summary>
        /// 添加文件夹
        /// </summary>
        /// <param name="entity"></param>
        public void AddFolder(WindowFolderEntity entity)
        {
            Debug.Assert(entity != null, "FormFolderEntity 为 null");

            if (entity == null)
            {
                return;
            }

            //添加索引信息
            _indexXml.XPathSelectElement(XPATH_Index_Folder).Add(GetArchiveIndex(entity));

            SaveIndexFile();

            //发布事件
            WindowFolderEventArgs args = new WindowFolderEventArgs(entity);

            _eventAggregator.GetEvent <WindowFolderAddedEvent>().Publish(args);
        }
        /// <summary>
        /// 此方法供DeleteFolder调用
        /// 作用是避免每次递归都SaveXml
        /// </summary>
        /// <param name="id"></param>
        /// <param name="deleteForm"></param>
        private void ProcessFolderDelete(string id)
        {
            WindowFolderEntity folderEntity = GetFolderEntity(id);

            Debug.Assert(folderEntity != null, "folderEntity 为 null");

            //递归当前目录下所有子目录,删除之
            WindowFolderEntityCollection folderCollection = GetFolderCollection(id);

            foreach (WindowFolderEntity folder in folderCollection)
            {
                ProcessFolderDelete(folder.Id);
            }

            //删除窗体
            foreach (XElement element in
                     from c in _indexXml.XPathSelectElements(String.Format(XPATH_Index_SelectWindow_ByFolderId, id)) select c)
            {
                string formId = element.Attribute("Id").Value;

                //移除索引信息
                element.Remove();

                //移除实体文件
                _packageService.Current.DeleteFile(Path.Combine(Constant.PACKAGE_WINDOW_FOLDER, formId));

                //移除缓存
                _cachingService.Remove(formId);
            }

            //从索引文件中删除本目录
            _indexXml.XPathSelectElement(String.Format(XPATH_Index_SelectFolder, id)).Remove();

            //发布事件
            WindowFolderEventArgs args = new WindowFolderEventArgs(folderEntity);

            _eventAggregator.GetEvent <WindowFolderRemovedEvent>().Publish(args);
        }
        /// <summary>
        /// 更新一个文件夹
        /// </summary>
        /// <param name="formFolderEntity"></param>
        public void UpdateFolder(WindowFolderEntity entity)
        {
            Debug.Assert(entity != null, "FormFolderEntity 为 null");

            if (entity == null)
            {
                return;
            }

            //更新索引信息
            XElement element = _indexXml.XPathSelectElement(String.Format(XPATH_Index_SelectFolder, entity.Id));

            Debug.Assert(element != null, "更新窗体文件夹索引时未找到指定文件夹的索引记录");
            if (element != null)
            {
                element.ReplaceWith(GetArchiveIndex(entity));
                SaveIndexFile();

                //发布事件
                WindowFolderEventArgs args = new WindowFolderEventArgs(entity);
                _eventAggregator.GetEvent <WindowFolderUpdatedEvent>().Publish(args);
            }
        }