/// <summary> /// 删除菜单项,及其所有子项 /// </summary> /// <param name="code"></param> public void Delete(MenuEntity entity) { Debug.Assert(entity != null, "menuEntity 为 null"); if (entity == null) { return; } //移除索引信息 XElement element = _indexXml.XPathSelectElement(String.Format(XPATH_Index_SelectMenuStrip, entity.Id)); Debug.Assert(element != null, "删除主菜单索引时未找到指定主菜单的索引记录"); if (element != null) { element.Remove(); SaveIndexFile(); //移除实体文件 _packageService.Current.DeleteFile(Path.Combine(Constant.PACKAGE_NAVIGATION_MENUSTRIP_FOLDER, entity.Id)); _cachingService.Remove(entity.Id); //通过递归删除所有子菜单项 DeleteChild(entity.Id); //发布事件 MenuStripEventArgs args = new MenuStripEventArgs(entity); _eventAggregator.GetEvent <MenuStripItemRemovedEvent>().Publish(args); } }
/// <summary> /// 更新(编辑)一个菜单项 /// </summary> /// <param name="entity"></param> public void Update(MenuEntity entity) { Debug.Assert(entity != null, "mainMenuEntity 为 null"); if (entity == null) { return; } //更新索引信息 XElement element = _indexXml.XPathSelectElement(String.Format(XPATH_Index_SelectMenuStrip, entity.Id)); Debug.Assert(element != null, "更新主菜单索引时未找到指定主菜单的索引记录"); if (element != null) { element.ReplaceWith(GetArchiveIndex(entity)); SaveIndexFile(); string xml = entity.ToXml(); XElement xElement = XElement.Parse(xml); //更新实体文件 _packageService.Current.AddFileContent(xml, Path.Combine(Constant.PACKAGE_NAVIGATION_MENUSTRIP_FOLDER, entity.Id)); _cachingService.Add(entity.Id, xElement); //发布事件 MenuStripEventArgs args = new MenuStripEventArgs(entity); _eventAggregator.GetEvent <MenuStripItemUpdatedEvent>().Publish(args); } }
/// <summary> /// 添加一个菜单项 /// </summary> /// <param name="entity"></param> public void Add(MenuEntity entity) { Debug.Assert(entity != null, "MenuEntity 为 null"); if (entity == null) { return; } //添加索引信息 _indexXml.XPathSelectElement(XPATH_Index_MenuStrip).Add(GetArchiveIndex(entity)); SaveIndexFile(); string xml = entity.ToXml(); XElement xElement = XElement.Parse(xml); //添加数据实体文件 _packageService.Current.AddFileContent(xml, Path.Combine(Constant.PACKAGE_NAVIGATION_MENUSTRIP_FOLDER, entity.Id)); _cachingService.Add(entity.Id, xElement); //发布事件 MenuStripEventArgs args = new MenuStripEventArgs(entity); _eventAggregator.GetEvent <MenuStripItemAddedEvent>().Publish(args); }