为什么内容控件在多次运行中被拆分?

时间:2014-07-10 15:20:36

标签: c# openxml

我有一个使用open xml处理word文档的应用程序。

因此,当我创建word文档时,我添加了一些内容控件。

为此,我选择了一个文本,然后在单词开发人员面板上单击“创建内容控件”。

问题是,它似乎正在将我的文本切割成几个不同的版本。

因此,当我想替换内容控件中的文本时,它不会替换所有文本,因为它已被拆分。

有人有任何解释吗?

我该如何解决这个问题?

对于信息,这是我获得sdtElement的方式:

SdtBlock sdtElement = wordDoc.MainDocumentPart.Document.Descendants<SdtBlock>()
                       .Where(element =>
                           element.SdtProperties.GetFirstChild<SdtAlias>() != null &&
                           element.SdtProperties.GetFirstChild<SdtAlias>().Val == "CADRE").SingleOrDefault();
                    if (sdtElement != null)
                    {
                        sdtElement.Descendants<Text>().FirstOrDefault().Text = "Some text";
}

有没有办法在我的内容控件中避免这种分裂。因为它不应该发生,因为在创建控件之前文本被选为一个。

编辑:正如JasonPlustext所说,好问题是:我怎样才能确定这种分裂不会发生?

这是xml:

<w:sdtContent>
      <w:sdt>
        <w:sdtPr>
          <w:rPr>
            <w:b />
            <w:sz w:val="26" />
          </w:rPr>
          <w:alias w:val="CADRE" />
          <w:tag w:val="CADRE" />
          <w:id w:val="-535731825" />
          <w:placeholder>
            <w:docPart w:val="DefaultPlaceholder_1082065158" />
          </w:placeholder>
          <w:text />
        </w:sdtPr>
        <w:sdtEndPr />
        <w:sdtContent>
          <w:p w:rsidR="00E07C25" w:rsidRDefault="00EB5705">
            <w:pPr>
              <w:pBdr>
                <w:top w:val="single" w:color="auto" w:sz="12" w:space="1" />
                <w:left w:val="single" w:color="auto" w:sz="12" w:space="1" />
                <w:bottom w:val="single" w:color="auto" w:sz="12" w:space="1" />
                <w:right w:val="single" w:color="auto" w:sz="12" w:space="1" />
              </w:pBdr>
              <w:shd w:val="pct20" w:color="auto" w:fill="auto" />
              <w:ind w:left="567" w:right="566" />
              <w:jc w:val="center" />
              <w:rPr>
                <w:b />
                <w:sz w:val="26" />
              </w:rPr>
            </w:pPr>
            <w:r>
              <w:rPr>
                <w:b />
                <w:sz w:val="26" />
              </w:rPr>
              <w:t>$CA</w:t>
            </w:r>
            <w:r w:rsidR="004943F1">
              <w:rPr>
                <w:b />
                <w:sz w:val="26" />
              </w:rPr>
              <w:t>DRE$</w:t>
            </w:r>
          </w:p>
        </w:sdtContent>
      </w:sdt>
    </w:sdtContent>

此外,我尝试删除文本,并重写它,这次,它没有拆分文本。

问题是,我收到了很多文件,所以我需要做很多工作来重写它们。

是否有最简单的解决方案?

谢谢。

0 个答案:

没有答案