我有一个WPF TextBox,其样式应用为StaticResource(Style =“{StaticResource MyStyle}”)。该样式使用AdornedElementPlaceholder定义ErrorTemplate,如下所示:
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="3">
<AdornedElementPlaceholder/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
这非常有效,直到我尝试在包含此文本框的控件上执行XamlWriter.Save(用于打印)。当调用XamlWriter.Save时,我得到一个System.Windows.Markup.XamlParseException,“System.Windows.Controls.AdornedElementPlaceholder'的初始化引发了一个异常。”,InnerException为“只能使用AdornedElementPlaceholder作为Template的一部分”。
有趣的是我可以通过使用DynamicResource(即Style =“{DynamicResource MyStyle})来解决这个问题。不幸的是,这对我来说不是一个好的解决方案,因为这将是常用的,我不想要开销of DynamicResource。