public ContentControl Clone() { if (!(SdtElement.CloneNode(true) is SdtElement clonedElement)) { return(null); } SdtElement.InsertBeforeSelf(clonedElement); var cloned = new ContentControl(clonedElement, IsDescendantOfAContentControl, TemplateDocument); TemplateDocument.AddControl(cloned, IsFirstOrder); cloned.GenerateDescendantsFromChildren(); cloned.Parent = Parent; return(cloned); }
internal static WordprocessingDocument RemoveSdtBlocks(this WordprocessingDocument doc, IEnumerable <string> contentBlocks) { List <SdtElement> SdtBlocks = doc.MainDocumentPart.Document.Descendants <SdtElement>().ToList(); if (contentBlocks == null) { return(doc); } foreach (var s in contentBlocks) { SdtElement currentElement = SdtBlocks.FirstOrDefault(sdt => sdt.SdtProperties.GetFirstChild <Tag>()?.Val == s); if (currentElement == null) { continue; } IEnumerable <OpenXmlElement> elements = null; if (currentElement is SdtBlock) { elements = (currentElement as SdtBlock).SdtContentBlock.Elements(); } else if (currentElement is SdtCell) { elements = (currentElement as SdtCell).SdtContentCell.Elements(); } else if (currentElement is SdtRun) { elements = (currentElement as SdtRun).SdtContentRun.Elements(); } foreach (var el in elements) { currentElement.InsertBeforeSelf(el.CloneNode(true)); } currentElement.Remove(); } return(doc); }