WinRT/Metro Animation в кодировке

Следующий код отлично работает в 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), которое работает.

В чем проблема с "Ширина"?

Ответы

Ответ 1

Вам нужно добавить следующее:

doubleAnimation.EnableDependentAnimation = true;

Это похоже на проблему.

Ответ 2

Я не уверен, но попытаюсь использовать:

Storyboard.SetTargetProperty(doubleAnimation, Button.WidthProperty);

Вместо

Storyboard.SetTargetProperty(doubleAnimation, "Width");