我正在尝试在页面导航之间创建淡入/淡出过渡,其实现与this非常相似。不幸的是,它没有按照我的意图行事。我的代码如下所示:
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秒的延迟。
这个问题真的让我很难过。我还没有弄清楚初始页面导航和前进/后退导航之间有什么不同。
编辑:在挖掘了一些之后,似乎第一个动画确实发生了,只是我没有看到它,因为它是上一页。所以我的问题必须是导航到新页面后出现的动画。答案 0 :(得分:1)
哎呀!如果我感觉有点气馁之前,我只是勉强挖了一下。
解决我的问题的技巧是将我的动画放在Navigated事件处理程序中。为了达到我想要的效果,不需要第一个淡出上一页的动画。我的代码现在看起来像这样:
frame_Navigated(object sender, NavigatingCancelEventArgs e)
{
DoubleAnimation animation = new DoubleAnimation
{
From = 0,
To = 1,
Duration = new Duration(Timespan.FromMillseconds(100))
};
frame.BeginAnimation(OpacityProperty, animation);
}
在导航处理程序中,新页面尚未加载,当我触发第二个动画时,它被加载并在加载后启动动画看起来很差。