首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WP7页面转换

WP7页面转换
EN

Stack Overflow用户
提问于 2011-09-03 05:22:50
回答 1查看 1.3K关注 0票数 2

我在APP.XAML中包含了一些代码来定义页面转换的一些样式。它包括在下面。

在我的WP7应用程序中,我有三个主页--比如M1、M2和M3。对于它们中的每一个,我在它们的XAML中都标记为使用'TurnstileTransition‘样式,当我在它们之间导航时,它们都工作得很好。但是,我也有一个用于创建新项的子页面--比如我从M2和M3导航到的M2。我的理解是,导航到这样的页面适合幻灯片转换,对于这些页面,我使用的是“SlideTransition”样式。

当我导航到S1时,它似乎将导航从M2 (旋转栅门)向前移出,然后导航ForwardIn for S1 (幻灯片)。看上去有点乱。

我的问题是

  1. 是我的假设,它通过这两个导航过程,
  2. 有一种建议的方法来处理这个问题--所以,在页面(M2)可以导航的地方,它不定义前向导航,而是在代码中完成这一操作。还是我需要转发导航,让它简单地将导航中的前向从它要到的页面中取出来?
  3. 假设我确实需要这样做,然后我重写标记它以获取样式的XAML,还是现在我需要在代码中完成所有这些??

谢谢

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2011-10-22 08:32:05

如果您想要有更多的页面转换(取决于您要导航到的页面),您应该重写OnNavigatingFrom方法,比如M2页面。在页面类ignoreTransition = false中添加一个bool变量(这将告诉我们是否应该执行转换),然后在OnNavigatedFrom方法中检查IgnoreTransition == false,如果ignoreTransition为false,则取消导航e.Cancel=true;,并找到您要导航到e.Uri的页面。如果Uri发送到另一个M页面,则启动转轨转换,否则启动幻灯片转换。

接下来,您需要订阅转换的Completed事件,并使用lambda表达式导航到要导航的页面:e.Uri。同时设置ignoreTransition = true;,否则您将在一个循环中结束。

最后但并非最不重要的一点是:重写OnNavigatedFrom并将ignoreTransition设置为true

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7291329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档