WP7页面转换
我在APP.XAML中包含了一些代码来为页面转换定义一些样式。它包括在下面。WP7页面转换
在我的WP7应用程序中,我有3个主要页面 - 说M1,M2和M3。对于他们中的每一个,我都在他们的XAML中标记了使用'TurnstileTransition'风格,当我在它们之间导航时,它们都运行良好。但是,我也有一个用于创建新项目的子页面 - 比如说我从M2和M3导航到S1。我的理解是,导航到这样的页面适合一个幻灯片过渡,并且对于这些页面我使用'幻灯片传输'风格。
当我导航到S1时,它似乎选取从M2(旋转门)向前导出,然后导航S1(幻灯片)的向前导出。看起来有点凌乱。
我的问题是
是我的假设正确的和经历的这两个导航
的是有一个推荐的方法来处理这一点 - 所以也许其中一个页面(M2)能远离一些方法,然后它不定义转发出口导航,但将其留在代码中完成。或者,我是否需要转出导航,并让它从导航页面中选择前进的导航?
假设我确实需要这样做,那么凸轮我重写XAML,我已经标记它来拾取样式,或者我现在需要在代码中完成这一切?
感谢
<Style x:Key="TurnstileTransition" 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:TurnstileTransition Mode="BackwardOut"/>
</toolkit:NavigationOutTransition.Backward>
<toolkit:NavigationOutTransition.Forward>
<toolkit:TurnstileTransition Mode="ForwardOut"/>
</toolkit:NavigationOutTransition.Forward>
</toolkit:NavigationOutTransition>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="SlideTransition" 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="SlideUpFadeOut"/>
</toolkit:NavigationOutTransition.Backward>
<toolkit:NavigationOutTransition.Forward>
<toolkit:SlideTransition Mode="SlideDownFadeOut"/>
</toolkit:NavigationOutTransition.Forward>
</toolkit:NavigationOutTransition>
</Setter.Value>
</Setter>
</Style>
如果你想拥有这取决于页你导航到你应该重写让我们说页M2的OnNavigatingFrom
方法的详细页面过渡。在你的页面类ignoreTransition = false
中添加一个bool变量(这会告诉我们是否应该进行转换),然后在OnNavigatedFrom
方法中检查IgnoreTransition == false
,如果ignoreTransition为false,则取消导航e.Cancel=true;
并找到要导航到的页面e.Uri
。如果Uri再次遇到另一个M页面,则启动旋转门转换,否则开始幻灯片转换。
接下来,您需要订阅转换的Completed
事件并使用lambda表达式导航到您想导航的页面:e.Uri
。同样设置ignoreTransition = true;
,否则你最终会陷入循环。
最后但并非最不重要:覆盖OnNavigatedFrom
并设置ignoreTransition
返回到true
。