VisualState, StoryBoard,即时改变颜色(没有动画)

本文关键字:动画 改变 StoryBoard VisualState 变颜色 | 更新日期: 2023-09-27 17:49:27

我的任务对我来说似乎很简单(WinRT)。

我想要的是根据状态改变Rectangle的颜色。

我知道如何用一种"酷"的动画方式来做。

问题是,我只是想改变我的颜色立即没有任何动画。

这是一个标准的,很酷的方式:

<VisualState x:Name="UnFocused">
    <Storyboard Duration="1">
        <ColorAnimation To="{ThemeResource LightGrayColor}"   
            Storyboard.TargetName="borderBrush"  
            Storyboard.TargetProperty="Color"/>
    </Storyboard>
</VisualState>  

我认为如果我改变Duration为零,那么变化将是即时的。

它不是这样工作的,颜色根本没有改变。

所以我尝试了"0:0:0.1",但它也没有改变颜色。

所以…

目前使用VisualState功能即时改变颜色的方法是什么?

谢谢你:-)

VisualState, StoryBoard,即时改变颜色(没有动画)

我不知道WinRT是否有一些限制。至少我也会期望零也可以。但你有更多的选择,仍然很酷:

<ObjectAnimationUsingKeyFrames Duration="00:00:00"
                                Storyboard.TargetName="borderBrush"
                                Storyboard.TargetProperty="Color">
    <DiscreteObjectKeyFrame KeyTime="00:00:00">
        <DiscreteObjectKeyFrame.Value>
            <SolidColorBrush Color="{ThemeResource LightGrayColor}"/>
        </DiscreteObjectKeyFrame.Value>
    </DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>

<ColorAnimationUsingKeyFrames Storyboard.TargetName="borderBrush"
                              Storyboard.TargetProperty="Color">
    <EasingColorKeyFrame KeyTime="0" 
                         Value="{ThemeResource LightGrayColor}" />
</ColorAnimationUsingKeyFrames>

把@Jacek-Wojcik的评论变成答案:

不要在故事板上设置持续时间,而是在ColorAnimation上设置它:

<VisualState x:Name="UnFocused">
  <Storyboard >
    <ColorAnimation Duration="0" To="{ThemeResource LightGrayColor}"   
        Storyboard.TargetName="borderBrush"  
        Storyboard.TargetProperty="Color"/>
 </Storyboard>
</VisualState>