2015年11月22日
川俣晶の縁側ソフトウェア技術雑記 total 2907 count

UWPでXAMLのアニメーションがページ遷移後も動き続ける問題

Written By: 川俣 晶連絡先

「UWPでXAMLのアニメーションのハンドラが意図しないタイミングで呼び出されているのでおかしいと思って調べたところ。興味深い挙動が分かった」

「どんな挙動だい?」

「あるページを表示しているとき、GoBackすることで、そのページは見えなくなり、その前のページが見えるようになる」

「普通の動作だね」

「そうだ。だがその時、見えなくなったページのアニメーションは動き続けていて、終了するとハンドラが呼び出される。そのハンドラから次のアニメーションを起動すると、アニメーションが終わるごとにハンドラが呼び出される。見えないページのアニメーションについてだ」

「なんだって?」

「その状態でもう一度そのページに行くと、新しいインスタンスが作成されることになり、アニメーションし続ける主体は2つに増える。ハンドラは意図した回数の2倍呼び出される。1回は見えているページに対する呼び出しだが、もう1つはもう見えないページに対する呼び出した。意味が無い」

「おいおい、どうすればいいんだよ」

「とりあえず、こういう感じでページがアンロードされるときに明示的にストーリーボードにアクセスしてアニメーションを止めて見た。

private void Page_Unloaded(object sender, RoutedEventArgs e)

{

myStoryboard.Stop();

}