Windows Phone 8.1类似Bing的滑动页面动画

11
我想在我的Windows Phone 8.1应用程序中添加页面转换,使下一个页面从屏幕底部滑入。当您按下“搜索”按钮启动Bing时,使用类似的效果。不幸的是,MSDN在这个主题上没有提供太多描述。有人知道如何实现这样的动画吗?
3个回答

17

首先,您需要禁用当前Frame的转换——最好的地方是在App.xaml.cs中创建rootframe的位置,但这取决于应用程序的初始化方式。例如,在此处是在MainPage构造函数中:

首先,您需要禁用当前Frame的转换——最好的地方是在App.xaml.cs中创建rootframe的位置,但这取决于应用程序的初始化方式。例如,在此处是在MainPage构造函数中:

public MainPage()
{
    this.InitializeComponent();
    Frame mainFrame = Window.Current.Content as Frame;
    mainFrame.ContentTransitions = null;
}

在禁用默认转场后,您可以在每个Page中定义自己的转场效果:

Page.xaml中:

<Page.Transitions>
    <TransitionCollection>
       <PaneThemeTransition Edge="Bottom"/>          
    </TransitionCollection>
</Page.Transitions>
我不确定那是否是您正在寻找的确切动画。有关动画的更多信息,您可以在MSDN上找到。
当然,您也可以定义Frame的新ContentTransitions,这样它们将成为所有Pages的默认设置,例如:
// instead of null put in MainPage constructor:
mainFrame.ContentTransitions = new TransitionCollection { new PaneThemeTransition { Edge = EdgeTransitionLocation.Bottom } };

4
你提供的解决方案几乎完美,谢谢。那正是我想要的动画类型。然而,在动画开始后,前一页会变黑。结果导致下一页滑动到一个黑色区域而不是前一页。你知道如何解决吗? - user3596795
@user3596795 你尝试过为所有页面设置主题动画吗?(在答案的末尾)- 在这种情况下,前一个页面将在新页面滑入之前向下滑动。 - Romasz
1
在为所有页面设置主题动画后,前一个页面确实会按照您所描述的方式行为。但这并不完全是我想要的。我希望前一个页面在下一个页面滑入时保持静止。您有任何想法如何实现吗? - user3596795
有人想出了如何保持上一页静止的方法吗? - Mark13426
有人解决了这个问题吗? - tagy22
显示剩余3条评论

3
默认的转场效果可以通过代码在每个导航上进行覆盖。
NavigationTransitionInfo transitionInfo = new SlideNavigationTransitionInfo();
Frame.Navigate(typeof(SecondPage), false, transitionInfo);

上面的代码将强制SecondPage从底部滑入,正如您所期望的那样。然而,这仅适用于特定的导航场景。如果您想要在从任何地方导航到SecondPage时使其滑入,请在XAML中设置NavigationTransitionInfo
<Page.Transitions>
    <TransitionCollection>
        <NavigationThemeTransition>
            <NavigationThemeTransition.DefaultNavigationTransitionInfo>
                <SlideNavigationTransitionInfo/>
            </NavigationThemeTransition.DefaultNavigationTransitionInfo>
        </NavigationThemeTransition>
    </TransitionCollection>
</Page.Transitions>

这将强制页面在导航到该页面时滑入。对于特定的导航场景,可以通过代码仍然覆盖此默认设置。


-2

我认为他正在使用WP8.1 WinRT而不是WP7 Silverlight。 - Rico Suter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接