XAML:在故事板中具有元素的当前颜色

时间:2012-12-18 08:17:57

标签: windows-phone-7 xaml storyboard winrt-xaml

是否可以获取元素的当前颜色

<UserControl.Resources>
<Storyboard x:Name="SBFade">
    <ColorAnimationUsingKeyFrames x:Name="keyframes" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)" Storyboard.TargetName="LayoutRoot">
        <EasingColorKeyFrame KeyTime="0" Value="#FF681D1D"/>
        <EasingColorKeyFrame KeyTime="0:0:0.6" Value="Gray"/>
    </ColorAnimationUsingKeyFrames>
</Storyboard>
</UserControl.Resources>

<Grid x:Name="LayoutRoot" Background="#808080" >.....</Grid>

在值为#FF681D1D的行中,我想要网格的当前背景颜色(此颜色可以在运行时更改.. 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

在非关键帧动画中,省略“From”值将完成您想要的操作。

类似的东西:

<Storyboard x:Name="SBFade">
    <ColorAnimation x:Name="keyframes" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)" Storyboard.TargetName="LayoutRoot" To="Gray" Duration="0:0:0.6" />
</Storyboard>

或者,对于关键帧,如果省略早期/第一个关键帧,则会获得相同的效果。使用DiscreteColorKeyFrame以外的任何东西(在指定的时间跳转到指定的颜色而不插值)将在颜色之间进行插值。

<Storyboard x:Name="SBFade">
    <ColorAnimationUsingKeyFrames x:Name="keyframes" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)" Storyboard.TargetName="LayoutRoot">
        <EasingColorKeyFrame KeyTime="0:0:0.6" Value="Gray"/>
    </ColorAnimationUsingKeyFrames>
</Storyboard>

这些与msdn示例ColorAnimationColorAnimationUsingKeyFrames非常相似(向下滚动到xaml示例)。

如果你想编写反向动画(从灰色不褪色到任何颜色),在视图模型中保持所需的颜色,并绑定To属性(在非关键帧动画的情况下)或Value属性(在关键帧动画的情况下)视图模型的属性。