【问题标题】:How to apply a storyboard on a trigger selectively based on if the TargetProperty exists如何根据 TargetProperty 是否存在有选择地在触发器上应用情节提要
【发布时间】:2014-07-20 23:09:44
【问题描述】:

我有一个DataTrigger,它在网格行上为Background.Color 设置动画。当BackgroundSolidColorBrush 类型时,它工作得很好,因为它有一个Color 属性。

但是,当突出显示该网格行时,背景变为LinearGradientBrush,其中does 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>

这是突出显示行时出现的异常。

附加信息:无法解析属性路径“背景。(颜色)”中的所有属性引用。验证适用的对象是否支持这些属性。

【问题讨论】:

    标签: wpf binding storyboard wpf-animation coloranimation


    【解决方案1】:

    我把它修好了。

    我像这样使用Storyboard.TargetProperty

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

    显然它通过名称SolidColorBrush 查找类型。

    更多关于括号的信息请见at MSDN

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

    【讨论】:

      猜你喜欢
      • 2018-12-22
      • 2011-04-19
      • 2020-01-01
      • 1970-01-01
      • 2012-04-27
      • 2016-12-09
      • 2017-12-16
      • 2021-03-25
      • 1970-01-01
      相关资源
      最近更新 更多