1

WinRT で Windows 8 用のプログラムを作成していますが、Popup-classに問題があります。

ポップアップ内のコンテンツは、開くと派手なイントロアニメーションを持っています。ポップアップが閉じる直前にコンテンツをアニメーション化したいのですが、方法がわかりません。

何か案は?

前もって感謝します

編集:これは、私がやろうとしていることの例です。Closed-eventhandler は明らかに、閉じる前に何かを行うには遅すぎます。しかし、あなたは要点を理解します。

    Popup popup = new Popup();

    SolidColorBrush brush = new SolidColorBrush(Colors.Red);
    Ellipse ell = new Ellipse() { Fill = brush, Width = 300, Height = 300 };
    popup.Child = ell;

    popup.Opened += (sender, e) =>
    {
        ColorAnimation anim = new ColorAnimation() { To = Colors.Blue };
        Storyboard.SetTarget(anim, brush);
        Storyboard.SetTargetProperty(anim, "Color");

        Storyboard sb = new Storyboard();
        sb.Children.Add(anim);

        sb.Begin();
    };
    popup.Closed += (sender, e) =>
    {
        ColorAnimation anim = new ColorAnimation() { To = Colors.Green };
        Storyboard.SetTarget(anim, brush);
        Storyboard.SetTargetProperty(anim, "Color");

        Storyboard sb = new Storyboard();
        sb.Children.Add(anim);

        sb.Begin();
    };

    popup.IsOpen = true;
4

1 に答える 1

2

ここでの問題は、ポップアップの表示状態が 2 つしかないことです ( isopen =true/false)。IsOpenが false (閉じている) に設定されている場合、ポップアップの可視性は Collapsed に設定され、アニメーションは再生されません。私が提案するのは次のとおりです。

ポップアップには明らかにそれを閉じるための閉じるボタンがありますよね? その閉じるボタンのクリック イベントで、アニメーションを開始します。次に、ストーリーボードで完了したイベントをリッスンし、popup.IsOpen=falseそこに設定します

sb.Completed += SomeEventHandler
于 2013-06-14T05:59:12.483 に答える