【问题标题】:How to know which was my last page in Windows Phone 8.1如何知道我在 Windows Phone 8.1 中的最后一页
【发布时间】:2014-09-08 13:14:30
【问题描述】:

所以在 WP7 和 WP8 中,我在 Page2 中执行此操作以了解我是否来自 Page1:

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);

        var lastPage = NavigationService.BackStack.FirstOrDefault();

        if (null != lastPage && true == lastPage.Source.ToString().Contains("Page1.xaml"))
        {

        }
    }

在 WP8.1 中做什么?

【问题讨论】:

    标签: c# windows xaml windows-phone-8.1


    【解决方案1】:

    在 Windows Phone 8.1 中,您可以使用 Frame(当前页面)的 BackStack 属性。

    使用以下代码,您将获得导航到新页面的页面:

    var lastPage = Frame.BackStack.Last().SourcePageType
    

    【讨论】:

    • 如果我从第二页导航回第一页。然后页面会从框架中删除,如果我还想知道我回来的页面名称,如何获取?
    【解决方案2】:

    在 WP8.1 RunTime 中,您有一个 Frame 类用于导航,您还可以在其中找到 BackStack property,从中可以阅读以前的页面。

    一个示例可能如下所示:

    /// <summary>
    /// Method checking type of the last page on the BackStack
    /// </summary>
    /// <param name="desiredPage">desired page type</param>
    /// <returns>true if last page is of desired type, otherwise false</returns>
    private bool CheckLastPage(Type desiredPage)
    {
        var lastPage = Frame.BackStack.LastOrDefault();
        return (lastPage != null && lastPage.SourcePageType.Equals(desiredPage)) ? true : false;
    }
    
    protected override async void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        if (CheckLastPage(typeof(MainPage)))
        {
            // do your job
            await new MessageDialog("Previous is MainPage").ShowAsync();
        }
    }
    

    【讨论】:

    • 如果我从第二页导航回第一页。然后页面会从框架中删除,如果我还想知道我回来的页面名称,如何获取?
    • @SunilKumarSC 看看this answer。
    • 谢谢,这就是我想要的:)
    【解决方案3】:

    在您的 OnNavigatedTo 函数中,您可以使用以下代码来确定您上次访问的页面

     protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if(this.Frame.BackStack.Count>0)
            {
                var lastPage = this.Frame.BackStack[this.Frame.BackStackDepth - 1];
                string lastPageName = lastPage.SourcePageType.Name;
                if(lastPageName == "MainPage")
                 {//This is main page}
            }
      }
    

    【讨论】:

    • 如果我从第二页导航回第一页。然后页面会从框架中删除,如果我还想知道我回来的页面名称,如何获取?
    【解决方案4】:

    它适用于 wp 8.1 silverlight

    var previousPage = NavigationService.BackStack.FirstOrDefault().Source;
    
    if (previousPage!=null && previousPage.ToString().Contains("MainPage"))
      {
        // do your work
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      相关资源
      最近更新 更多