2014-09-08 2 views
4

Таким образом, в WP7 и WP8 я сделал это в Page2 знать, если бы я пришел из Page1:Как узнать, какой была моя последняя страница в Windows Phone 8.1

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?

ответ

8

В Windows Phone 8.1, вы можете использовать свойство BackStack кадра (текущая страница).

Используя следующий код, который вы получите страницу, которая возникла в навигацию на новую страницу:

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

Если я перейду обратно со второй страницы на первую страницу. Тогда страница будет удалена из фрейма. Если все же я хочу узнать имя страницы, с которой я вернулся, как получить? –

5

В WP8.1 RunTime у вас есть Кадр класс, который вы используете для навигации, там вы также найдете 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(); 
    } 
} 
+0

Если я перейду с второй страницы на первую страницу GE. Тогда страница будет удалена из фрейма. Если все же я хочу узнать имя страницы, с которой я вернулся, как получить? –

+1

@SunilKumarSC Взгляните на [этот ответ] (http://stackoverflow.com/a/31002860/2681948). – Romasz

+0

Спасибо, что все, что я хотел :) –

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} 
     } 
    } 
+0

Если я перейду с второй страницы на первую страницу. Тогда страница будет удалена из фрейма. Если все же я хочу узнать имя страницы, с которой я вернулся, как получить? –

0

Он работает для wp 8.1 silverlight

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

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