代码隐藏中的WinRT / Metro动画

时间:2012-06-29 10:56:02

标签: c# windows-runtime winrt-xaml

以下代码在Silverlight中正常工作:

private void Button_Click_1(object sender, RoutedEventArgs e)
{    
    Storyboard storyboard = new Storyboard();
    DoubleAnimation doubleAnimation = new DoubleAnimation();
    doubleAnimation.From = 50;
    doubleAnimation.To = 100;
    doubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
    doubleAnimation.AutoReverse = true;
    doubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(200));
    storyboard.Children.Add(doubleAnimation);
    Storyboard.SetTarget(doubleAnimation, button1);
    Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("Width"));
    storyboard.Begin();
}

在WinRT / Metro中,需要进行一次小改动才能编译:

Storyboard.SetTargetProperty(doubleAnimation, "Width");

但是当你运行它时,没有任何反应。

如果您将属性从“宽度”更改为“不透明度”(也可以更改From = 0和To = 1)。

“宽度”有什么问题?

2 个答案:

答案 0 :(得分:21)

您需要添加以下内容:

doubleAnimation.EnableDependentAnimation = true;

这似乎解决了这个问题。

答案 1 :(得分:1)

我不确定但是尝试使用:

Storyboard.SetTargetProperty(doubleAnimation, Button.WidthProperty);

而不是

Storyboard.SetTargetProperty(doubleAnimation, "Width");