我想替换 Validation.ErrorTemplate 的正常行为。我想在我自己的 UserControl 后面放置一个背景边框对象(用红色填充),然后应用简单的彩色动画来闪烁它。
我在我的隐式控制风格中尝试了这个:
<Style TargetType="{x:Type local:myControl}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<Border Name="ErrorBorder" CornerRadius"5" Background="Red">
<AdornedElementPlaceholder />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="ToolTip" Value="{Binding
RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
</Style>
遗憾的是,边框对象完全覆盖了控件 UI。另一个问题是:在哪里放置应用于不透明度的双动画以使我的背景闪烁的正确位置?我应该触发哪些属性/事件?我应该使用 style 还是简单地将其放在 Border.Trigger 中?
谢谢
确定这是不可能的,装饰器总是画在装饰元素的顶部。
请参阅 MSDN 上的装饰者概述
"Adorner是绑定到UIElement的自定义框架元素。装饰器在 AdornerLayer 中渲染,AdornerLayer 是一个渲染表面,始终位于装饰元素或装饰元素集合的顶部"
您可以通过使用仅与装饰元素接壤的普通边框进行装饰来获得相同的效果,而不是试图将其粘贴在装饰元素后面。