2012-06-12 28 views
4

我已经下载了最新的Windows.Phone.Controls.Toolkit并在app.xaml.cs改变WP7如何使用工具包TransitionFrame?

RootFrame = new PhoneApplicationFrame(); 

RootFrame = new TransitionFrame(); 

我预计在页面之间的过渡部分的变化,但没有发生任何事情。

我是否需要做更多的事情来实现更有趣的转换?

回答

8

您通过添加补充参考xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

,并尝试旋转门效应:

<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> 

你想有过渡效果的每个页面。

或者您可以尝试其他效果,例如:幻灯片,旋转,旋转和滚动。

+0

哦,我绝对错过了我需要的东西添加到每个页面。谢谢!! – Sam

1

一旦您指定要使用TransitionFrame那么你需要告诉什么样的转变,你想进入和外出页面的应用程序,这里是我使用的一些典型的XAML:

首先注册了命名空间的页面的标题:

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" 

然后设置过渡

<toolkit:TransitionService.NavigationInTransition> 
     <toolkit:NavigationInTransition> 
      <toolkit:NavigationInTransition.Backward> 
       <toolkit:TurnstileTransition Mode="BackwardIn"/> 
      </toolkit:NavigationInTransition.Backward> 
      <toolkit:NavigationInTransition.Forward> 
       <toolkit:SlideTransition Mode="SlideRightFadeIn" /> 
      </toolkit:NavigationInTransition.Forward> 
     </toolkit:NavigationInTransition> 
    </toolkit:TransitionService.NavigationInTransition> 

你可以尝试不同的过渡类型鳍d最适合您的应用程序的。

HTH, Rupert。

5

为后人:

如果你不希望有写所有的XAML的每一页,创建一个辅助类,并在页面的构造函数应用的过渡。

Transitions.cs

public class Transitions { 

    /// <summary> 
    /// Set the Turnstile transition for this UIElement 
    /// </summary> 
    /// <param name="element"></param> 
    public static void UseTurnstileTransition(UIElement element) 
    { 
     TransitionService.SetNavigationInTransition(element, 
      new NavigationInTransition() { 
       Backward = new TurnstileTransition() { 
        Mode = TurnstileTransitionMode.BackwardIn 
       }, 
       Forward = new TurnstileTransition() { 
        Mode = TurnstileTransitionMode.ForwardIn 
       } 
      } 
     ); 

     TransitionService.SetNavigationOutTransition(element, 
      new NavigationOutTransition() { 
       Backward = new TurnstileTransition() { 
        Mode = TurnstileTransitionMode.BackwardOut 
       }, 
       Forward = new TurnstileTransition() { 
        Mode = TurnstileTransitionMode.ForwardOut 
       } 
      } 
     ); 
    } 
} 

ExamplePage.xaml.cs

public partial class ExamplePage : PhoneApplicationPage { 
    public ExamplePage() { 
     InitializeComponent(); 

     Transitions.UseTurnstileTransition(this); 
    } 
} 
+1

太棒了!非常有帮助 - 谢谢。 – James

+0

整齐,+1 - 虽然通常我更喜欢用一种风格来做,因此即使在查看XAML时也是如此。我已经添加了该效果的答案。 –

3

只是注意扩大对@ subkamran的答案。取而代之的是辅助类的,你也可以使用样式:

<Style x:Key="TransitionPageStyle" TargetType="phone:PhoneApplicationPage"> 
    <Setter Property="toolkit:TransitionService.NavigationInTransition"> 
     <Setter.Value> 
      <toolkit:NavigationInTransition> 
       <toolkit:NavigationInTransition.Backward> 
        <toolkit:TurnstileTransition Mode="BackwardIn"/> 
       </toolkit:NavigationInTransition.Backward> 
       <toolkit:NavigationInTransition.Forward> 
        <toolkit:TurnstileTransition Mode="ForwardIn"/> 
       </toolkit:NavigationInTransition.Forward> 
      </toolkit:NavigationInTransition> 
     </Setter.Value> 
    </Setter> 

    <Setter Property="toolkit:TransitionService.NavigationOutTransition"> 
     <Setter.Value> 
      <toolkit:NavigationOutTransition> 
       <toolkit:NavigationOutTransition.Backward> 
        <toolkit:SlideTransition Mode="BackwardOut"/> 
       </toolkit:NavigationOutTransition.Backward> 
       <toolkit:NavigationOutTransition.Forward> 
        <toolkit:TurnstileTransition Mode="ForwardOut"/> 
       </toolkit:NavigationOutTransition.Forward> 
      </toolkit:NavigationOutTransition> 
     </Setter.Value> 
    </Setter> 
</Style> 
相关问题