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
功能即时改变颜色的方法是什么?
谢谢你:-)
我不知道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>