18

次のコードが示すように、メイン ウィンドウを閉じる前にアニメーションがあります。問題はStoryBoard.Completed発砲しないことです。これを引き起こしている手がかりはありますか?

コード

DoubleAnimation dblAnimX = new DoubleAnimation(1.0, 0.0, new  Duration(TimeSpan.FromSeconds(0.5)));
dblAnimX.SetValue(Storyboard.TargetProperty, this);

DoubleAnimation dblAnimY = new DoubleAnimation(1.0, 0.0, new Duration(TimeSpan.FromSeconds(0.5)));
dblAnimY.SetValue(Storyboard.TargetProperty, this);

Storyboard story = new Storyboard();
Storyboard.SetTarget(dblAnimX, this);
Storyboard.SetTarget(dblAnimY, this);
Storyboard.SetTargetProperty(dblAnimX, new PropertyPath("RenderTransform.ScaleX"));
Storyboard.SetTargetProperty(dblAnimY, new PropertyPath("RenderTransform.ScaleY"));

story.Children.Add(dblAnimX);
story.Children.Add(dblAnimY);
story.Begin(this);

story.Completed += (o, s) => { this.Close(); };
4

1 に答える 1

53

Begin を呼び出す前に、Completed ハンドラーを追加します。

story.Completed += (o, s) => Close();
story.Begin(this);

この動作の理由は、Completed ハンドラーが、Begin 中に作成された内部クロック オブジェクトにアタッチされているためです。Completedの Remarks セクションを参照してください。

このイベント ハンドラーはタイムラインに関連付けられているように見えますが、実際には、このタイムライン用に作成されたクロックに登録されます。詳細については、タイミング イベントの概要を参照してください。

于 2013-01-06T15:17:13.000 に答える