2

Windows 8 Metro アプリで Border コントロールの幅をアニメーション化しようとしています。Opacity など、Border の他のプロパティをアニメーション化することができました。

private void Item_Tapped(object sender, RoutedEventArgs e)
{
    var border = sender as Border;

    var animation = new DoubleAnimation();
    animation.To = 0.0;
    animation.Duration = new Duration(TimeSpan.FromSeconds(1));

    var storyboard = new Storyboard();
    storyboard.Children.Add(animation);

    Storyboard.SetTarget(animation, border);
    Storyboard.SetTargetProperty(animation, "Opacity");

    storyboard.Begin();
}

しかし、コントロールの幅をアニメーション化しようとすると:

private void Item_Tapped(object sender, RoutedEventArgs e)
{
    var border = sender as Border;

    var animation = new DoubleAnimation();
    animation.To = 600.0;
    animation.Duration = new Duration(TimeSpan.FromSeconds(1));

    var storyboard = new Storyboard();
    storyboard.Children.Add(animation);

    Storyboard.SetTarget(animation, border);
    Storyboard.SetTargetProperty(animation, "Width");

    storyboard.Begin();
}

何も起こりません。

WPF ではこれを実行できますが、Windows 8 では実行できません。これは Metro の制限またはバグですか、それとも何か問題がありますか?

ありがとう

4

2 に答える 2

0

有効にすることで動作させることができましたEnableDependentAnimation

    public static async Task Width(FrameworkElement obj, double doubleValue, int milliseconds)
    {
        var animation= new DoubleAnimation
        {
            To = doubleValue,
            Duration = TimeSpan.FromMilliseconds(milliseconds),
            EnableDependentAnimation = true// <== here
        };

        Storyboard.SetTarget(animation, obj);
        Storyboard.SetTargetProperty(animation, "Width");

        var sb = new Storyboard();
        sb.Children.Add(animation);
        await sb.BeginAsync();
    }

楽しみ!

于 2016-03-03T14:50:14.600 に答える
-2

WPFでどのように機能しているのかわかりません。http://msdn.microsoft.com/en-us/library/system.windows.media.animation.storyboard.targetpropertyによると、ターゲット プロパティは依存関係プロパティである必要があります。http://msdn.microsoft.com/en-us/library/system.windows.controls.borderによると、幅は依存プロパティではありません。

于 2012-07-27T21:20:16.493 に答える