我想替换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>
不幸的是,border对象完全覆盖了控件UI。 另一个问题是:在Opacity上应用DoubleAnimation以使我的背景闪烁的正确位置在哪里?我应该触发哪个属性/事件?我应该使用样式还是只是将它放在Border.Triggers中?
谢谢
答案 0 :(得分:2)
我很确定这是不可能的,装饰品总是位于装饰元素的顶部。
请参阅MSDN上的Adorners Overview
“Adorner是一个绑定到UIElement的自定义FrameworkElement。Adorner是在AdornerLayer中呈现的,AdornerLayer是一个始终位于装饰元素或装饰元素集合之上的渲染表面”
你可以通过装饰正常边框来获得相同的效果,边框只是与装饰元素相邻,而不是试图将它贴在装饰元素后面。