什么类型(页面)我是从哪里导航的?

时间:2014-07-25 02:15:44

标签: c# navigation windows-phone-8.1

在基本页面模板中,有方法NavigationHelper_LoadState(object sender, LoadStateEventArgs e){}。如何查看上一页的内容?

if(sender.GetType() == typeof(PreviousPage)){}不起作用!

我的主要目标是通过干净的代码了解我的数据来源。

2 个答案:

答案 0 :(得分:2)

虽然一个选项是发送带有页面类型的参数,但我不会这样做,因为您可能需要该参数来在页面之间传递一些其他相关数据。

所以,我宁愿做这样的事情:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    if (Frame.CanGoBack)
    {
        PageStackEntry lastPage = Frame.BackStack[Frame.BackStackDepth - 1];
        if (lastPage.SourcePageType == typeof(MainPage))
        {
            // do something
        }
    }
    this.navigationHelper.OnNavigatedTo(e);
}

答案 1 :(得分:1)

NavigationHelper 调用NavigationHelper_LoadState(object sender, LoadStateEventArgs e){}并且传递的发件人 NavigationHelper 时,您的方法无效没有从导航开始的页面传递信息。

我没有看到任何可以阅读此信息的属性,但您肯定可以将之前的类型作为参数传递:

// when navigating:
Frame.Navigate(typeof(Page1), this.ToString());

// in target Page:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    if (e.Parameter == typeof(MainPage).ToString())
        Debug.WriteLine("Previous was MainPage");
}