导航到数据透视控件时的Silverlight工具包动画

时间:2012-06-25 10:02:00

标签: silverlight windows-phone-7 animation silverlight-toolkit windows-phone

我在所有页面中都使用了silverlight工具包动画。 它在经典页面,全景页面和关闭轴时工作正常。

但是当我导航到一个旋转控件时,我经常发现动画根本没有开始,特别是在普通设备上(比如HTC Trophy)。在好的手机(如Lumia 800)上表现更好,但每次动画都不会触发。

是否存在枢轴控件的已知错误,该错误会延迟初始化并导致动画被取消? 我无法理解为什么动画如此不稳定,以及为什么它会不时起作用。 例如,在People应用程序中,当您单击某个联系人时,该透视图始终显示该动画。我希望能够重现这种行为。

仅供参考,我把这段代码放在xaml文件中:

<toolkit:TransitionService.NavigationInTransition>
  <toolkit:NavigationInTransition>
    <toolkit:NavigationInTransition.Backward>
      <toolkit:TurnstileTransition
        Mode="BackwardIn" />
    </toolkit:NavigationInTransition.Backward>
    <toolkit:NavigationInTransition.Forward>
      <toolkit:TurnstileTransition
        Mode="ForwardIn" />
    </toolkit:NavigationInTransition.Forward>
  </toolkit:NavigationInTransition>
</toolkit:TransitionService.NavigationInTransition>
<toolkit:TransitionService.NavigationOutTransition>
  <toolkit:NavigationOutTransition>
    <toolkit:NavigationOutTransition.Backward>
      <toolkit:TurnstileTransition
        Mode="BackwardOut" />
    </toolkit:NavigationOutTransition.Backward>
    <toolkit:NavigationOutTransition.Forward>
      <toolkit:TurnstileTransition
        Mode="ForwardOut" />
    </toolkit:NavigationOutTransition.Forward>
  </toolkit:NavigationOutTransition>
</toolkit:TransitionService.NavigationOutTransition>

任何线索都会有所帮助。感谢。

1 个答案:

答案 0 :(得分:1)

可能是页面的加载速度太慢,我会从分析开始,看看花了最多的时间执行并检查内存使用情况。

动画未显示时我使用的一些技巧:

  • 从OnNavigatedTo事件和页面构造函数中删除尽可能多的代码(在评论中也由Ashen提及)
  • 减少布局组件的数量。一种方法是尝试用图像替换尽可能多的布局。您也可以尝试在加载页面时从代码创建组件。 (例如,目前不可见的枢轴项目)
  • 如果页面上有Bing地图控件,请将其从XAML中删除并从代码中加载,因为该控件通常会停止显示动画。 (由于装载缓慢)
  • 确保使用的所有图像都设置为内容,而不是资源。 (这应该减少初始应用加载时间)
  • 删除XAML代码中具有默认值的所有属性,例如,如果您获得Margin属性是不必要的,因为0已经是默认值。删除Margin属性会稍微提高速度(因为需要解析的XAML较少)。如果你在很多控件上执行此操作,速度可能会有明显的提升。

最后在App.xaml.cs中将过渡帧的背景设置为透明(也降低了填充率):

RootFrame = new TransitionFrame() { Background = new SolidColorBrush(Colors.Transparent) };