所以在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中做什么?
答案 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
}