显然,一个SdtContentCheckBox
对象的.Parent
属性引用了一个SdtProperty
可以查询Tag
后代的集合。
我不明白这个对象建模背后的逻辑,但它可以用来完成工作:
// using DocumentFormat.OpenXml.Packaging;
// using System.Diagnostics;
// using System.Linq;
SdtContentCheckBox TryGetCheckBoxByTag(WordprocessingDocument doc, string tag)
{
foreach (var checkBox in doc.MainDocumentPart.Document.Descendants<SdtContentCheckBox>())
{
var tagProperty = checkBox.Parent.Descendants<Tag>().FirstOrDefault();
if (tagProperty != null)
{
Debug.Assert(tagProperty.Val != null);
if (tagProperty.Val.Value == tag)
{
// a checkbox with the given tag property was found
return checkBox;
}
}
}
// no checkbox with the given tag property was found
return null;
}