Windows runtime &引用;移除用于启动的旋转栅门导航。”;什么?
以下代码在创建WP8.1 XAML应用程序的默认模板中提供。(通用/WinRT) 这个代码是用来做什么的?当Windows runtime &引用;移除用于启动的旋转栅门导航。”;什么?,windows-runtime,windows-phone,winrt-xaml,Windows Runtime,Windows Phone,Winrt Xaml,以下代码在创建WP8.1 XAML应用程序的默认模板中提供。(通用/WinRT) 这个代码是用来做什么的?当rootFrame.ContentTransitions!=空。应用程序提供自己的开场动画而不是旋转栅门可能会很酷。例如,像科尔塔纳 在App.xaml.cs中 #if WINDOWS_PHONE_APP // Removes the turnstile navigation for startup. if (rootFrame.Conten
rootFrame.ContentTransitions!=空
。应用程序提供自己的开场动画而不是旋转栅门可能会很酷。例如,像科尔塔纳
在App.xaml.cs中
#if WINDOWS_PHONE_APP
// Removes the turnstile navigation for startup.
if (rootFrame.ContentTransitions != null)
{
_transitions = new TransitionCollection();
foreach (var c in rootFrame.ContentTransitions)
{
_transitions.Add(c);
}
}
rootFrame.ContentTransitions = null;
rootFrame.Navigated += this.RootFrame_FirstNavigated;
#endif
编辑:我发现了一条线索——如果上面所有的代码都被注释掉了,那么转门页面转换无处不在。现在只要您取消注释:rootFrame.ContentTransitions=null代码>然后所有旋转栅门页面转换都被移除。这很奇怪,因为ContentTransitions在setter之前为null,但是如果setter设置为null,则转换是不同的
编辑:由于操作系统竞争条件,似乎需要此代码。如果所有代码都被注释掉了,除了在极少数情况下将内容转换置零,则应用程序具有旋转栅门动画。RemoverootFrame.Navigated+=this.rootFrame\u FirstNavigated代码>
并替换rootFrame.ContentTransitions=null代码>
byrootFrame.ContentTransitions=new TransitionCollection()代码>
要指定每个页面的转换,请使用:
<Page.Transitions>
<TransitionCollection>
<NavigationThemeTransition />
</TransitionCollection>
</Page.Transitions>
更新(2014年12月3日)
我刚刚发现了一种在应用程序第一次加载时使用动画“隐藏”操作系统级旋转栅门的方法
实现这一目标需要三件事-
该应用程序没有启动图像
ContentTransitions
在主页的导航到处理程序中设置为null
在
动画中创建一个页面,并为主页的布局根
的背景色设置动画-基本上先将其与系统背景色对齐,然后在短时间内将其设置为所需的任何颜色
您可以从下载示例
如果你把所有的代码都注释掉了。您会认为ContentTransitions
仍然应该是null
对吗?至少我是这么想的
答案是否定的。ContentTransitions
稍后将分配一个NavigationThemeTransition
这可能是因为在默认的Frame
样式中,有以下代码行
<Setter Property="ContentTransitions">
<Setter.Value>
<TransitionCollection>
<NavigationThemeTransition/>
</TransitionCollection>
</Setter.Value>
</Setter>
我猜,在这个属性的setter中,没有if(_contentTransitions!=null)返回代码>检查,当您将其设置为null
时,必须有某种东西阻止它获取默认的导航METRANSION
,这就是您不再看到旋转栅门动画的原因
然而,仍然有一个动画,无论你做什么,你都会看到
按后退或主页键尝试暂停应用程序,然后重新激活。是的,旋转栅门动画回来了!虽然我认为这个旋转栅门动画不同于我们在Frame.ContentTransitions
中禁用的动画。看一看应用程序是如何第一次启动的——旋转栅门动画的启动屏幕。我相信,这是同一个,它可能是由操作系统控制的
那么,他们为什么要投这张支票呢
if (rootFrame.ContentTransitions != null)
我的猜测是因为有一个操作系统级的旋转栅门动画,如果你不提供闪屏,操作系统只会为你的应用程序启动设置动画,因此跳过帧内的任何内容都是有意义的。ContentTransitions
您可能会问,但是Frame.ContentTransitions
总是null
这里有一个场景,它不会是null
。尝试使用一些默认的ContentTransitions
,而不是
rootFrame = new Frame();
做
这一次,您将看到代码进入if
语句,因为ContentTransitions
不再是null
我期待这个答案。谢谢,这真是一件棘手的事情。对我来说仍然很神秘。我不确定我是否购买“//删除启动时的旋转栅门导航。”只是为了防止您创建自定义框架样式。
rootFrame = new Frame();
rootFrame = new Frame { Style = (Style)App.Current.Resources["MyFrame"] };