【问题标题】:WPF Validation.ErrorTemplate Background ObjectWPF Validation.ErrorTemplate 背景对象
【发布时间】:2013-11-21 07:00:28
【问题描述】:

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    我很确定这是不可能的,装饰器总是被绘制在被装饰的元素之上。

    请参阅 MSDN 上的 Adorners Overview

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-15
      • 2015-07-16
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多