为所有对象分配故事板

时间:2014-03-24 19:31:19

标签: c# windows-phone-8

我需要将我创建的Storyboard动画分配给16张图片 我正在使用 VS2012 Blend for Windows Phone

动画是关于淡出,所以我为1张照片做了检查它是否有效,并且它有效,现在我需要为每张照片设置ControlPropetyAction动画

所以我选择了所有图片并在Blend中录制了动画,但是当我播放它时 它使全部图片淡出!但我只需要每张照片在 Tapped 时淡出!

我怎么能这样做? (无需执行 16 动画类型)

Description

XAML中的动画代码:

   <Image x:Name="pic1" Margin="12,33,372,562" Grid.Row="1" Source="/Assets/1395704999_red-21.png" Stretch="Fill">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="Tap">
                <eim:ControlStoryboardAction Storyboard="{StaticResource fadeOutAnimation}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </Image>

1 个答案:

答案 0 :(得分:1)

基于your previous question,这是您正在使用的XAML示例

<Storyboard>
    <DoubleAnimation
        Storyboard.TargetName="ImageName"
        Storyboard.TargetProperty="Opacity"        
        From="1.0" To="0.0" Duration="0:0:1"/>
</Storyboard>

这可以很容易地翻译成代码。

var story = new Storyboard();
var animation = new DoubleAnimation { Duration = TimeSpan.FromSeconds(1), To = 0, From = 1};
Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity"));
Storyboard.SetTarget(animation, YOUR_UI_ELEMENT_HERE);
story.Children.Add(animation);
story.Begin();

如果您订阅了元素的Tap事件,那么sender就是您的UIElement

private void GridOnTap(object sender, GestureEventArgs gestureEventArgs)
{
    UIElement element = (UIElement)sender;
    // Call code above, replace YOUR_UI_ELEMENT_HERE
}