如何在Windows Phone 8.1上查找最近访问的网页

4
在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中需要做些什么?

4个回答

8
在Windows Phone 8.1中,您可以使用Frame(当前页面)的BackStack属性。使用以下代码,您将获得发起导航到新页面的页面:
var lastPage = Frame.BackStack.Last().SourcePageType

如果我从第二页返回到第一页,那么该页面将从框架中删除。如果我仍然想知道我从哪个页面返回来的,该怎么办? - Sunil Kumar S C

5
在WP8.1 RunTime中,您有一个Frame类,用于导航,您还可以在其中找到BackStack属性,从中可以读取先前的页面。
示例代码如下:
/// <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();
    }
}

如果我从第二页导航回第一页,那么该页面将从框架中删除。如果我仍然想知道我从哪个页面返回来的页面名称,该怎么办? - Sunil Kumar S C
1
@SunilKumarSC 请查看这个答案 - Romasz
谢谢,这就是我想要的 :) - Sunil Kumar S C

2
在您的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}
        }
  }

如果我从第二页返回到第一页,则该页面将从框架中删除,但如果我仍想知道我返回的页面名称,该怎么办?如何获取? - Sunil Kumar S C

0

它适用于wp 8.1 silverlight

var previousPage = NavigationService.BackStack.FirstOrDefault().Source;

if (previousPage!=null && previousPage.ToString().Contains("MainPage"))
  {
    // do your work
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接