2

我的申请中有 2 页,A 和 B。

如果我从应用程序外部导航到 A,我想显示一个消息框。如果我从 B 导航到 A,我不想显示任何内容。

有没有办法在 A 中识别启动导航的页面?即在 A.Loaded (或任何其他事件)中,我需要类似的东西

if(pageFromWhichIAmComingFrom == B) 

OnNavigatedTo、OnNavigationFrom 和 OnNavigatedFrom 似乎对我没有帮助。

4

1 回答 1

3

您可以使用PhoneApplicationService类来存储有关您上次访问的页面的信息。例如,OnNavigatedFrom在页面 A 上使用:

void OnNavigatedFrom(object sender, Eventargs e)
{
   PhoneApplicationService.Current.State["LastPage"] = "PageA";
}

然后在下一页检查:

void OnNavigatedTo(object sender, Eventargs e)
{
   if(PhoneApplicationService.Current.State["LastPage"].ToString() == "PageA")
   {
      // came from page A
   }
   else 
   {
       // came from a different page
   }
}

希望这可以帮助!

更新:

我刚刚看到的另一件可能值得尝试的事情是使用该NavigationService.BackStack属性。我还没有尝试过,但它似乎应该可以工作。在您的OnNavigatedTo事件处理程序中,您应该能够从堆栈中获取最后一个条目以查看您的最后一页。这会更简单,并且不需要您手动设置任何属性。例子:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    var lastPage = NavigationService.BackStack.FirstOrDefault();
}

在这里找到。

于 2013-04-08T13:28:34.970 回答