w:showingPlcHdr (Showing Placeholder Text)
Indicates that the structured document tag is currently displaying its placeholder text rather than actual user-entered content.
Parent elements
Description
w:showingPlcHdr is a toggle element that flags an SDT as currently displaying placeholder text (hint text). When present and true, the content inside w:sdtContent is the placeholder content referenced by w:placeholder, not a real value.
It is defined in ECMA-376 Part 1 §17.5.2.37.
When the user enters data into the SDT, the authoring application removes w:showingPlcHdr and replaces w:sdtContent with the actual content.
Attributes
| Attribute | Type | Possible Values | Description |
|---|---|---|---|
w:val |
ST_OnOff |
true, false, 1, 0, on, off |
Enables or disables the placeholder mode. Omitting w:val is equivalent to true. |
Examples
<w:sdt>
<w:sdtPr>
<w:alias w:val="Name"/>
<w:placeholder>
<w:docPart w:val="DefaultPlaceholder_-1854013440"/>
</w:placeholder>
<w:showingPlcHdr/>
</w:sdtPr>
<w:sdtContent>
<w:r><w:t>[Click or tap here to enter text]</w:t></w:r>
</w:sdtContent>
</w:sdt>
using DocumentFormat.OpenXml.Wordprocessing;
// Check whether an SDT is showing placeholder text
bool isPlaceholder = sdtElement.SdtProperties?
.Descendants<ShowingPlaceholder>().Any() == true;
// Remove the flag when setting actual content
sdtElement.SdtProperties?
.Descendants<ShowingPlaceholder>()
.ToList()
.ForEach(e => e.Remove());
Notes
- When programmatically populating an SDT, always remove
w:showingPlcHdrafter setting the content. - The presence of
w:showingPlcHdrdoes not prevent the content from being read — it is purely a semantic flag.