【发布时间】:2014-06-11 09:56:55
【问题描述】:
我想在我的 Windows Phone 8.1 应用程序中添加页面转换,以使下一个页面将从屏幕底部滑入。当您通过点击 Search 按钮启动 Bing 时,也会使用类似的效果。
不幸的是,MSDN 对这个主题的描述并不多。有谁知道如何实现这样的动画?
【问题讨论】:
标签: xaml windows-phone windows-phone-8.1
我想在我的 Windows Phone 8.1 应用程序中添加页面转换,以使下一个页面将从屏幕底部滑入。当您通过点击 Search 按钮启动 Bing 时,也会使用类似的效果。
不幸的是,MSDN 对这个主题的描述并不多。有谁知道如何实现这样的动画?
【问题讨论】:
标签: xaml windows-phone windows-phone-8.1
首先,您必须禁用 Frame 的当前转换 - 最好的位置是在创建 rootframe 的 App.xaml.cs 中,但这取决于您的应用程序的初始化方式。例如在 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>
我不确定这是否是您正在寻找的确切动画。更多关于动画的信息,你会发现here at MSDN。
当然你也可以定义Frame的新ContentTransitions,这样它们就成为所有Pages的默认值——例如:
// instead of null put in MainPage constructor:
mainFrame.ContentTransitions = new TransitionCollection { new PaneThemeTransition { Edge = EdgeTransitionLocation.Bottom } };
【讨论】:
Transition,但我不知道该怎么做。
默认转换可以在每个导航的基础上从代码中覆盖。
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>
这将强制页面在导航到时滑入。对于特定导航场景,仍然可以通过代码覆盖此默认值。
【讨论】:
在The Windows Phone Toolkit你可以找到动画和示例
这里有一些article
【讨论】: