zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    cookie包含中文导致的问题
    Mysql date_sub函数使用
    mysql 忘记root密码修改方法
    你所知道的Java单例模式并不是单例模式
    cookie与sessionID之间的关系实验
    Cookie实例,理解cookie
    spring项目中使用定时任务
    Jsp开发自定义标签,自定义标签将字符串转成指定的时间格式显示
    Java 生成压缩包,ZipOutputStream的使用
    Spring的web应用启动加载数据字典方法
  • 原文地址:https://www.cnblogs.com/navigator/p/2917693.html
Copyright © 2011-2022 走看看