Toolkit NavigationTransitions有时不起作用

时间:2012-01-21 20:01:49

标签: c# windows-phone-7 windows-phone-7.1 silverlight-toolkit

我正在尝试使用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,而且它更好,可能是因为硬件更强大。但是我今天会尝试直接使用Storyboard。

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

1 个答案:

答案 0 :(得分:2)

我认为原因可能是复杂的布局以及导航到或加载页面时的大量处理。您可以通过使页面相当简单,避免任何加载或处理来检查它 - 如果您仍然没有看到动画 - 那么我不知道发生了什么。如果它变得更好 - 你需要在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使用率。