[Silverlight] コード側から生成するStoryBoardでRenderTransformの値を変化させる例

9:45 PM on 2011年3月24日 , ,

(XAML)
<Button x:Name="button" RenderTransformOrigin="0.5,0.5">
    <Button.RenderTransform>
        <TransformGroup>
            <ScaleTransform/>
            <SkewTransform/>
            <RotateTransform/>
            <TranslateTransform/>
        </TransformGroup>
    </Button.RenderTransform>
</Button>

(C#)
// ボタンが上から下に移動するStoryboard
private void CreateStoryboard()
{
    Storyboard sb = new Storyboard();

    DoubleAnimation animationTransformY = new DoubleAnimation()
    {
        Duration = TimeSpan.FromSeconds(2.0),
        From = -30.0,
        To = 0.0,
        EasingFunction = new BackEase()
        {
            Amplitude = 1,
            EasingMode = EasingMode.EaseInOut,
        }
    };

    // DoubleAnimationに対象のオブジェクトを設定
    Storyboard.SetTarget(animationTransformY, this.button);

    // DoubleAnimationで変化させるプロパティを設定
    Storyboard.SetTargetProperty(animationTransformY, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)"));

    // StoryboardにDoubleAnimation追加
    sb.Children.Add(animationTransformY);

    sb.Begin();
}