ColorAnimation cannot be used to animate property Background due to incompatible type

今天在编写一个控件的样式的时候,碰到了如下的异常:

    ColorAnimation cannot be used to animate property Background due to incompatible type.

    这里是报异常处的XAML代码,

  <ColorAnimation Storyboard.TargetName="border" 
         Storyboard.TargetProperty="Background"
         Duration="0" To="#FF6B6B6B">
           <ColorAnimation.EasingFunction
                <ExponentialEase Exponent="15" EasingMode="EaseOut"/>
           </ColorAnimation.EasingFunction>
   </ColorAnimation>


   它运行时出现了一个异常:ColorAnimation cannot be used to animate property Background due to incompatible type.

   这里说的是ColorAnimation 中因为不兼容的类型,不能给背景设置颜色动画。

   通过查找资料和尝试发现: 把TargetProperty改为(Border.Background).(SolidColorBrush.Color)可以解决该问题

  <ColorAnimation Storyboard.TargetName="border" 
         Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
         Duration="0" To="#FF6B6B6B">
           <ColorAnimation.EasingFunction
                <ExponentialEase Exponent="15" EasingMode="EaseOut"/>
           </ColorAnimation.EasingFunction>
   </ColorAnimation>
 

    当然,这里还有第二种解决方案:

    

<Storyboard>
     <ObjectAnimationUsingKeyFrames Storyboard.TargetName="border" 
                                    Storyboard.TargetProperty="Background">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" />
     </ObjectAnimationUsingKeyFrames>
</Storyboard>


  PS:

     ObjectAnimationUsingKeyFrames 对指定 Duration(持续动画) 内的一组 KeyFrames (关键帧)中的 Object 属性值进行动画处理。用于定义动画关键帧的一个或多个 DiscreteObjectKeyFrame 对象元素。

  MSDN上的关于ObjectAnimationUsingKeyFrames 的实例:

   下面的示例使用 ObjectAnimationUsingKeyFrames 类对 Rectangle 的 Fill 属性进行动画处理。此动画按如下方式使用两个关键帧:

  1. 通过使用 DiscreteObjectKeyFrameRectangle 的 Fill 属性会在动画的前两秒之后突然更改为 LinearGradientBrush

  2. 在动画的第三秒之后,Fill 属性会突然更改为另一个 LinearGradientBrush,然后一直保持到动画结束(总共四秒)。

      <Storyboard x:Name="myStoryboard">
                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="animatedRectangle"
                                               Storyboard.TargetProperty="Fill"  Duration="0:0:4" RepeatBehavior="Forever">
                    <ObjectAnimationUsingKeyFrames.KeyFrames>
                        <DiscreteObjectKeyFrame KeyTime="0:0:2">
                            <DiscreteObjectKeyFrame.Value>
                                <LinearGradientBrush>
                                    <LinearGradientBrush.GradientStops>
                                        <GradientStop Color="Yellow" Offset="0.0" />
                                        <GradientStop Color="Orange" Offset="0.5" />
                                        <GradientStop Color="Red" Offset="1.0" />
                                    </LinearGradientBrush.GradientStops>
                                </LinearGradientBrush>
                            </DiscreteObjectKeyFrame.Value>
                        </DiscreteObjectKeyFrame>
    
                        <DiscreteObjectKeyFrame KeyTime="0:0:3">
                            <DiscreteObjectKeyFrame.Value>
                                <RadialGradientBrush GradientOrigin="0.75,0.25">
                                    <RadialGradientBrush.GradientStops>
                                        <GradientStop Color="White" Offset="0.0" />
                                        <GradientStop Color="MediumBlue" Offset="0.5" />
                                        <GradientStop Color="Black" Offset="1.0" />
                                    </RadialGradientBrush.GradientStops>
                                </RadialGradientBrush>
                            </DiscreteObjectKeyFrame.Value>
                        </DiscreteObjectKeyFrame>
    
                    </ObjectAnimationUsingKeyFrames.KeyFrames>
                </ObjectAnimationUsingKeyFrames>
           </Storyboard>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值