WPF Validation.ErrorTemplate背景对象

时间:2013-11-09 06:26:17

标签: wpf validation wpf-controls errortemplate wpf-animation

我想替换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中?

谢谢

1 个答案:

答案 0 :(得分:2)

我很确定这是不可能的,装饰品总是位于装饰元素的顶部。

请参阅MSDN上的Adorners Overview

“Adorner是一个绑定到UIElement的自定义FrameworkElement。Adorner是在AdornerLayer中呈现的,AdornerLayer是一个始终位于装饰元素或装饰元素集合之上的渲染表面”

你可以通过装饰正常边框来获得相同的效果,边框只是与装饰元素相邻,而不是试图将它贴在装饰元素后面。