我觉得我的任务很简单(WinRT)。
我想要的是根据状态改变Rectangle
的颜色。
我知道如何在"酷"动画的方式。
问题是我只想在没有任何动画的情况下立即更改颜色。
这是一种标准的,很酷的方式:
<VisualState x:Name="UnFocused">
<Storyboard Duration="1">
<ColorAnimation To="{ThemeResource LightGrayColor}"
Storyboard.TargetName="borderBrush"
Storyboard.TargetProperty="Color"/>
</Storyboard>
</VisualState>
我认为如果我将Duration
更改为零,则更改将是即时的。
这种方式不起作用,颜色根本没有变化。
所以我尝试了#34; 0:0:0.1&#34;但它也没有改变颜色。
因此...
使用VisualState
功能即时更改颜色的当前方法是什么?
谢谢: - )
答案 0 :(得分:1)
我不知道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>
答案 1 :(得分:0)
将@ Jacek-Wojcik的评论转变为答案:
不要在故事板上设置持续时间,而是在ColorAnimation上设置:
<VisualState x:Name="UnFocused">
<Storyboard >
<ColorAnimation Duration="0" To="{ThemeResource LightGrayColor}"
Storyboard.TargetName="borderBrush"
Storyboard.TargetProperty="Color"/>
</Storyboard>
</VisualState>