我正在尝试使用与此非常相似的实现在页面导航之间创建淡入/淡出过渡。不幸的是,它没有按照我的预期行事。我的代码如下所示:
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);
}
似乎在页面最初导航到之后,第一个动画没有开始,但第二个链式动画确实开始了。但是,如果我通过向后或向前跳来导航,它的行为正是我想要的方式。
第一个动画肯定会开始,因为如果我将持续时间增加到更明显的时间,比如 5 秒,那么在第二个动画开始之前会有 5 秒的延迟。
这个问题真的让我很头疼。我还没有弄清楚初始页面导航和前进/后退导航之间有什么不同。
编辑:在挖掘了更多之后,似乎第一个动画确实发生了,只是我没有看到它,因为它是上一页。所以我的问题一定是在导航到新页面后正在发生动画。