gpt4 book ai didi

windows-runtime - "Removes the turnstile navigation for startup."什么?

转载 作者:行者123 更新时间:2023-12-04 07:02:35 27 4
gpt4 key购买 nike

以下代码在用于创建 WP8.1 XAML 应用程序的默认模板中提供。 (通用/WinRT)。

这段代码是干什么用的?当 rootFrame.ContentTransitions != null 时,我似乎无法找到断点。 .应用程序提供自己的打开动画而不是旋转门会很酷。例如。像小娜。

在 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,则转换会有所不同。

编辑编辑:由于操作系统竞争条件,似乎需要此代码。如果除少数情况下将 ContentTransitions 置空之外的所有代码都被注释掉,则应用程序具有旋转门动画。

最佳答案

更新(2014 年 12 月 3 日)

我刚刚发现了一种在应用程序第一次加载时使用动画来“隐藏”操作系统级别旋转门的方法。

实现这一目标需要三件事——

  • 该应用程序没有启动图像。
  • ContentTransitions设置为 null在您主页的 NavigatedTo处理程序。
  • 创建一个 PageIn动画和动画您的主页 LayoutRoot的背景颜色 - 基本上是首先将其与系统背景颜色对齐,然后在短时间内将其动画为您想要的任何颜色。

  • 您可以从 here 下载示例.

    如果你把所有的代码都注释掉了。你会认为 ContentTransitions应该仍然是 null对?至少我是这么认为的。

    答案是 . ContentTransitions稍后将分配一个 NavigationThemeTransition .

    这可能是因为在默认情况下 Frame风格,有这些代码行。
    <Setter Property="ContentTransitions">
    <Setter.Value>
    <TransitionCollection>
    <NavigationThemeTransition/>
    </TransitionCollection>
    </Setter.Value>
    </Setter>

    但是, Frame 的这个属性只设置得很晚。如果您在 MainPage 的构造函数中放置了一个断点.你会看到它仍然是 null .但是如果你在 OnNavigatedTo 中放置另一个断点,最后你会看到两个 this.Framethis.Frame.ContentTransitions与他们的值(value)观。

    如果我取消注释怎么办
    rootFrame.ContentTransitions = null;

    我猜,在这个属性的 setter 中,没有 if (_contentTransitions != null) return;检查,当您将其设置为 null 时,一定有什么东西可以阻止它获得默认值 NavigationThemeTransition ,这就是为什么您不再看到旋转门动画的原因。

    然而,还有 一部动画无论你做什么,你都会看到。

    尝试暂停您的应用程序返回 首页 键并重新激活它。是的,旋转门动画又回来了!虽然我认为这个旋转门动画与我们在 Frame.ContentTransitions 中禁用的动画不同。 .看看应用程序是如何首次启动的 - 一个带有旋转门动画的闪屏。我相信这是同一个,它可能是由操作系统控制的。

    那么,他们为什么要放这张支票呢?
    if (rootFrame.ContentTransitions != null)

    我的猜测是因为有操作系统级别的旋转门动画,如果您不提供启动画面,操作系统将简单地为您的应用程序启动动画,因此跳过 Frame.ContentTransitions 中的任何内容是有意义的。 .

    然后你可能会问,但是 Frame.ContentTransitions总是 null !

    这是一种情况,它不会是 null .尝试创建自定义 Frame一些默认样式 ContentTransitions , 而不是
    rootFrame = new Frame(); 


    rootFrame = new Frame { Style = (Style)App.Current.Resources["MyFrame"] };

    这一次,您将看到代码进入 if声明为 ContentTransitions不再 null .

    关于windows-runtime - "Removes the turnstile navigation for startup."什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23504640/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com