これと非常によく似た実装で、ページナビゲーション間のフェードイン/フェードアウト遷移を作成しようとしています。残念ながら、それは私が意図したように動作していません。私のコードは次のようになります。
private void frame_Navigating(object sender, NavigatingCancelEventArgs e)
{
DoubleAnimation animation = new DoubleAnimation
{
From = 1,
To = 0,
Duration = new Duration(Timespan.FromMillseconds(100))
};
animation.Completed += new EventHandler(animation_Completed);
frame.BeginAnimation(OpacityProperty, animation);
}
private void animation_Completed(object sender, EventArgs e)
{
DoubleAnimation animation = new DoubleAnimation
{
From = 0,
To = 1,
Duration = new Duration(Timespan.FromMillseconds(100))
};
frame.BeginAnimation(OpacityProperty, animation);
}
ページが最初に移動された後、最初のアニメーションは開始されないようですが、2番目の連鎖アニメーションは開始されます。ただし、前後にジャンプしてナビゲートすると、意図したとおりに動作します。
最初のアニメーションは間違いなく開始されています。これは、期間をより目立つ時間、たとえば5秒に増やすと、2番目のアニメーションが開始するまでに5秒の遅延があるためです。
この問題は本当に私を困惑させています。最初のページナビゲーションと進む/戻るナビゲーションの違いがわかりません。
編集:もう少し掘り下げた後、最初のアニメーションが実際に発生しているようですが、前のページであるため、表示されません。したがって、私の問題は、新しいページに移動した後にアニメーションが発生していることであるに違いありません。