Comment voulez-vous changer le contenu d'un contrôle de contenu dans Word 2007 avec OpenXml SDK 2.0?

Sur le point de devenir fou avec ce problème. Je suis sûr que c'est tellement simple que je suis juste en manque, mais je ne peux pas pour la vie de moi à trouver comment modifier le contenu d'un contrôle de contenu dans Word 2007 avec OpenXml SDK v2.0 en C#.

J'ai créé un document Word avec un simple contrôle de contenu de texte. L'étiquette de cette commande est "Prénom". Dans le code, je voudrais ouvrir le document Word, trouver ce contrôle de contenu, et de changer le contenu sans perdre la mise en forme.

La solution que j'ai finalement obtenu de travail impliquait de trouver le contrôle de contenu, l'insertion d'un courir après, puis en supprimant le contrôle de contenu en tant que tel:

using (WordprocessingDocument wordProcessingDocument = WordprocessingDocument.Open(filePath, true)) {
MainDocumentPart mainDocumentPart = wordProcessingDocument.MainDocumentPart;
SdtRun sdtRun = mainDocumentPart.Document.Descendants<SdtRun>()
 .Where(run => run.SdtProperties.GetFirstChild<Tag>().Val == "FirstName").Single();

if (sdtRun != null) {
 sdtRun.Parent.InsertAfter(new Run(new Text("John")), sdtRun);
 sdtRun.Remove();
}

Ce n'modifier le texte, mais je perds tout le formatage. Quelqu'un sait-il comment je peux faire cela?

OriginalL'auteur Jason | 2010-01-15