如何知道哪个是我在Windows Phone 8.1中的最后一页

时间:2014-09-08 13:14:30

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

所以在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 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:5)

在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();
    }
}

答案 2 :(得分: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}
        }
  }

答案 3 :(得分:0)

适用于wp 8.1 silverlight

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

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