Toolkit导航转换有时不起作用

本文关键字:不起作用 转换 导航 Toolkit | 更新日期: 2023-09-27 18:20:55

我正在尝试使用Microsoft Phone Controls Toolkit中的导航转换。通过在应用程序资源中定义样式,我将它与大多数关于该主题的博客文章中的默认实现一起使用:

<Style x:Key="ReaderTransitionPageStyle"
        TargetType="phone:PhoneApplicationPage">
    <Setter Property="toolkit:TransitionService.NavigationInTransition">
        <Setter.Value>
            <toolkit:NavigationInTransition>
                <toolkit:NavigationInTransition.Backward>
                    <toolkit:SlideTransition Mode="SlideDownFadeIn" />
                </toolkit:NavigationInTransition.Backward>
                <toolkit:NavigationInTransition.Forward>
                    <toolkit:SlideTransition Mode="SlideUpFadeIn" />
                </toolkit:NavigationInTransition.Forward>
            </toolkit:NavigationInTransition>
        </Setter.Value>
    </Setter>
    <Setter Property="toolkit:TransitionService.NavigationOutTransition">
        <Setter.Value>
            <toolkit:NavigationOutTransition>
                <toolkit:NavigationOutTransition.Backward>
                    <toolkit:SlideTransition Mode="SlideDownFadeOut" />
                </toolkit:NavigationOutTransition.Backward>
                <toolkit:NavigationOutTransition.Forward>
                    <toolkit:SlideTransition Mode="SlideUpFadeOut" />
                </toolkit:NavigationOutTransition.Forward>
            </toolkit:NavigationOutTransition>
        </Setter.Value>
    </Setter>
</Style>

然后将此样式应用于我的页面。

然而,转换很少起作用。有时它们工作正常,有时则不然。即使我在同两个页面之间来回导航,有时它会正确地设置动画,有时根本不会,页面会立即弹出。即使在工作时,动画也不是流动的,而是相当缓慢的。

是否有任何常见的原因会减缓工具包提供的转换?我不应该在目标页面的OnNavigatedTo中进行任何长时间的处理吗?

有没有其他技术可以制作页面过渡动画,或者唯一的其他解决方案是使用自定义故事板?

更新:我一直在用HTC Mozart开发,今天我试着用我的一款同事的Lumia 800,它好多了,可能是因为它的硬件更强。然而,我今天将尝试直接使用情节提要。

更新:直接使用故事板没有帮助,动画仍然不一致和断断续续。

Toolkit导航转换有时不起作用

我认为原因可能是复杂的布局和导航到或加载页面时的大量处理。你可以通过让页面变得相当简单来检查它,避免任何加载或处理-如果你仍然没有看到动画-那么我不知道发生了什么。如果情况好转,你需要进行perf。将大多数处理延迟到过渡动画完成,将所有可能的内容转移到异步调用/后台线程处理。请参阅:

http://blogs.msdn.com/b/slmperf/archive/2011/06/13/off-thread-decoding-of-images-on-mango-how-it-impacts-you-application.aspx

使用BackgroundWorker,注意同步,节约CPU使用。