protected bool GetParentContainer(ref SdtElement parentContainer, string placeholder)
        {
            MainDocumentPart mainDocumentPart         = parentContainer.Ancestors <Document>().First().MainDocumentPart;
            KeyValuePair <string, string> nameToValue = this.customXmlPartHelper.GetNameToValueCollectionFromElementForType(mainDocumentPart, DocumentContainerPlaceholdersNode, NodeType.Element).FirstOrDefault(f => f.Key.Equals(placeholder));
            bool isRefresh = !string.IsNullOrEmpty(nameToValue.Value);

            if (isRefresh)
            {
                SdtElement parentElementFromCustomXmlPart = new SdtBlock(nameToValue.Value);
                parentContainer.Parent.ReplaceChild(parentElementFromCustomXmlPart, parentContainer);
                parentContainer = parentElementFromCustomXmlPart;
            }
            else
            {
                Dictionary <string, string> nameToValueCollection = new Dictionary <string, string> {
                    { placeholder, parentContainer.OuterXml }
                };
                this.customXmlPartHelper.SetElementFromNameToValueCollectionForType(mainDocumentPart, DocumentRootNode, DocumentContainerPlaceholdersNode, nameToValueCollection, NodeType.Element);
            }

            return(isRefresh);
        }
        /// <summary>
        /// Sets the data binding.
        /// </summary>
        /// <param name="xpath">The x path.</param>
        /// <param name="element">The element.</param>
        protected void SetDataBinding(string xpath, SdtElement element)
        {
            element.SdtProperties.RemoveAllChildren <DataBinding>();
            DataBinding dataBinding = new DataBinding()
            {
                XPath = xpath, StoreItemId = new StringValue(this.customXmlPartHelper.CustomXmlPartCore.GetStoreItemId(element.Ancestors <Document>().First().MainDocumentPart))
            };

            element.SdtProperties.Append(dataBinding);
        }