2

我想替换 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。另一个问题是:将 DoubleAnimation 应用于 Opacity 以使我的背景闪烁的正确位置在哪里?我应该触发哪些属性/事件?我应该使用样式还是简单地将其放在 Border.Triggers 中?

谢谢

4

1 回答 1

2

我很确定这是不可能的,装饰者总是被画在装饰元素的顶部。

请参阅MSDN 上的装饰器概述

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

您可以通过使用仅与装饰元素接壤的普通边框进行装饰来获得相同的效果,而不是尝试将其粘贴在装饰元素的后面。

于 2014-01-20T19:52:04.837 回答