trapemiyaの日記

hatenablogが新しくなったんで新規一転また2019年1月からちょこちょこ書いてます。C#中心のプログラミングに関するお話です。

複数のStoryboardを順に実行する方法

複数のStoryboardを順に実行するにはどうしたら良いのだろうか? StoryboardにはChildrenプロパティがあり、そこに複数のStoryboardを登録できる。例えば、親StoryboardのChildrenプロパティに子Storyboadを複数追加する。こんな感じだ。

var sb = new Storyboard();
sb.Children.Add(storyboad1);
sb.Children.Add(storyboad2);
sb.Children.Add(storyboad3);
sb.Begin();

しかし、これではstoryboad1、storyboad2、storyboad3が同時に動いてしまう。そうではなく、storyboad1が終わったらstoryboad2を始め、storyboad2が終わったらstoryboad3を始めたいのだ。
結論から言えば、storyboad1のCompletedイベントでstoryboad2を始め、storyboad2のCompletedインベントでstoryboad3を始めれば良い。これを実にスマートに実現するコードが以下にあったのでご紹介しておく。yield returnとラムダ式をうまく使った素敵なコードだと思う。

WPF - sequential animation simple example
http://stackoverflow.com/questions/1511870/wpf-sequential-animation-simple-example