所以在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中做什么?
在Windows Phone 8.1中,您可以使用Frame(当前页面)的BackStack属性。
使用下面的代码,你会得到导航到新页面的页面:
var lastPage = Frame.BackStack.Last().SourcePageType
在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(); } }
在您的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} } }
它适用于wp 8.1 silverlight
var previousPage = NavigationService.BackStack.FirstOrDefault().Source; if (previousPage!=null && previousPage.ToString().Contains("MainPage")) { // do your work }