3

私は ac# クラスを持っています。それを と呼びましょうTwoButtonsHolder。このクラスでは、UIElementsStoryBoards を使用してアニメートしたいものが 2 つあります。ButtonAそれらを と と呼びましょうButtonB。両方を同時にアニメーションさせたいので、すべてのアニメーションを 1 つの Storyboard オブジェクトに入れることにしました (または、もっと良い方法はありますか?)。そのため、現在、コード ビハインドでストーリーボード オブジェクトを作成しようとしていますが、ターゲット プロパティを定義する必要がある部分で立ち往生しています。通常、アニメーションを宣言するときは、次のようなコードを使用してプロパティを設定します

Storyboard.SetTargetProperty(myDoubleAnimation,
                             new PropertyPath(UIElement.OpacityProperty));

これで、TwoButtonsHolder タイプのターゲット オブジェクト内に UIElement ができました。ストーリーボードを作成し、アニメーション ターゲット プロパティを に設定するにはどうすればよいTwoButtonsHolder.ButtonA.UIElement.OpacityPropertyですか? アニメーションを同時に実行するために、単一のストーリーボードを使用して複数のオブジェクトをアニメーション化するのは悪い設計ですか? (参考までに、これをコード ビハインドで試してみたいのですが、XAML は複雑すぎて学習が難しいため、まだ XAML には入りたくありません)。ありがとうございました

編集: 2 つのボタンのアニメーションが異なることを追加したいだけです。同じストーリーボードに配置する唯一の理由は、同時にアニメーションを開始するためです。

4

1 に答える 1

9

1 つのストーリーボードに複数のオブジェクトのアニメーションを含めることは、まったく悪い設計ではありません。

次のように書きます。

var animationA = new DoubleAnimation(...);
Storyboard.SetTarget(animationA, ButtonA);
Storyboard.SetTargetProperty(animationA, new PropertyPath(UIElement.OpacityProperty));

var animationB = new DoubleAnimation(...);
Storyboard.SetTarget(animationB, ButtonB);
Storyboard.SetTargetProperty(animationB, new PropertyPath(UIElement.OpacityProperty));

var storyboard = new Storyboard();
storyboard.Children.Add(animationA);
storyboard.Children.Add(animationB);
storyboard.Begin();
于 2013-02-19T16:50:53.420 に答える