如何根据TargetProperty是否存在选择性地在触发器上应用故事板

时间:2014-07-20 23:09:44

标签: wpf binding storyboard wpf-animation coloranimation

我有DataTrigger在网格行上设置Background.Color动画。当Background类型为SolidColorBrush时,它的效果很好,因为它具有Color属性。

但是当突出显示该网格行时,背景变为LinearGradientBrushdoes not have a Color属性和我的故事板失败并出现异常。我该如何处理?

这是我的触发器

    <DataTrigger Binding="{Binding Row.State}" Value="Finished">
        <DataTrigger.EnterActions>
            <BeginStoryboard>
                <Storyboard >
                    <ColorAnimation
                                    Storyboard.TargetProperty="Background.(Color)" 
                                    To="LightGreen" Duration="0:0:1" />
                </Storyboard>
        </BeginStoryboard>
    </DataTrigger.EnterActions>
    </DataTrigger>

以下是突出显示行时获得的异常。

  

其他信息:无法解析属性路径中的所有属性引用&quot;背景。(颜色)&#39;。验证适用的对象是否支持属性。

1 个答案:

答案 0 :(得分:0)

我修好了。

我使用了Storyboard.TargetProperty这样的

Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"

显然,它会按名称SolidColorBrush查找类型。

有关括号的更多信息,请at MSDN

  

在多个对象和子属性表单中,必须使用拥有对象来消除初始属性的歧义,并将括号放在此初始object.property组合周围。此后,子属性只需要命名,不具有拥有类型的限定条件,但这些子属性必须存在于前面属性的值类型中。对后续子属性拥有类型进行限定的稍微冗长的形式也是可以接受的;例如,“(Rectangle.Fill)。(SolidColorBrush.Color)”。