【问题标题】:Identify from which page come to this page in windows phone 8.1在windows phone 8.1中识别从哪个页面来到这个页面
【发布时间】:2014-11-07 04:58:45
【问题描述】:

我如何知道我来自 Windows phone 8.1 中的哪个页面?例如,我有 3 个页面:登录页面、主页和类别页面。我想要做的是确定用户是从哪些页面进入主页的;从登录页面或类别页面。

我在MainPage.csOnNavigatedTo 方法中尝试了这段代码,

var lastPage = this.Frame.BackStack.Last();           

if (lastPage != null && lastPage.SourcePageType.Name.ToString() == "LogInPage")
{               
}
else
{
}

但问题是在我转到类别页面并返回主页后,它仍然提供了一个登录页面作为最后一个堆栈。如何解决?

【问题讨论】:

    标签: c# windows-phone-8.1


    【解决方案1】:

    但问题是在我转到类别页面并返回主页后,它仍然提供了一个登录页面作为最后一个堆栈。如何解决?

    没错。当您通过硬件后退按钮从类别页面导航回主页面时,后退堆栈上的最后一个条目会从后退堆栈中弹出并推到前进堆栈的末尾

    因此,您可以通过两种不同的方式导航到页面MainPage

    1. 您可以通过Frame.Navigate(typeof(MainPage))Frame.GoForward() 导航前进,如果MainPageFrame.ForwardStack 中是最后一个。您上一个页面是Frame.BackStack.Last()
    2. 如果 MainPageFrame.BackStack 中最后,您可以通过Frame.GoBack() 导航向后。您上一页是Frame.ForwardStack.Last()

    那么,你怎么知道是参考后向堆栈还是前向堆栈呢?在您的Page.OnNavigatedTo() 方法覆盖中,检查e.NavigationMode 的值。如果其值为NavigationMode.NewNavigationMode.Forward,则检查返回堆栈。如果其值为NavigationMode.Back,则检查正向堆栈。

    这里有一些代码:

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        Type lastPage = null;
    
        switch (e.NavigationMode)
        {
            case NavigationMode.New:
            case NavigationMode.Forward:
                if (Frame.BackStack.Count > 0)
                    lastPage = Frame.BackStack.Last().SourcePageType;
                break;
    
            case NavigationMode.Back:
                if (Frame.ForwardStack.Count > 0)
                    lastPage = Frame.ForwardStack.Last().SourcePageType;
                break;
    
            default:
                // TODO
                break;
        }
    
        if (lastPage != null)
            System.Diagnostics.Debug.WriteLine("Last page was {0}", lastPage);
    }
    

    【讨论】:

      【解决方案2】:

      您是否尝试删除 BackStack

      How to navigate using the back stack for Windows Phone 8

      或者尝试cache页面。

      How to cache a page in Windows Phone 8.1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多