コード例 #1
0
        private void InitChild()
        {
            WindowFolderEntityCollection subFolders = _windowComponentService.GetFolderCollection(this.UniqueID.ToString());

            children = new FolderAddressNode[subFolders.Count];
            for (int i = 0; i < subFolders.Count; i++)
            {
                children[i] = new FolderAddressNode((WindowFolderEntity)subFolders[i], this);
            }
        }
コード例 #2
0
        /// <summary>
        /// 获取隶属于指定目录的子目录集合
        /// </summary>
        /// <param name="folderId"></param>
        /// <returns></returns>
        public WindowFolderEntityCollection GetFolderCollection(string folderId)
        {
            if (folderId == null)
            {
                folderId = String.Empty;
            }

            WindowFolderEntityCollection collection = new WindowFolderEntityCollection();

            foreach (XElement element in
                     _indexXml.XPathSelectElements(String.Format(XPATH_Index_SelectFolder_ByParentId, folderId)))
            {
                WindowFolderEntity formFolderEntity = new WindowFolderEntity();
                //FormFolderEntity在往Index文件里存的时候是直接ToXml的
                //所以此处直接FromXml即可
                formFolderEntity.FromXml(element.ToString());

                collection.Add(formFolderEntity);
            }

            return(collection);
        }
コード例 #3
0
        /// <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);
        }