1

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

但是当我导航到枢轴控件时,我经常发现动画根本无法启动,尤其是在普通设备上(如 HTC Trophy)。在好手机(如 Lumia 800)上效果更好,但动画并非每次都触发。

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

仅供参考,我将此代码放在 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>

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

4

1 回答 1

1

可能页面的加载太慢了,我会从 profiling 开始,看看执行和检查内存使用情况是什么时间最长。

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

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

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

RootFrame = new TransitionFrame() { Background = new SolidColorBrush(Colors.Transparent) };
于 2012-06-28T21:02:01.577 回答