我的申请中有 2 页,A 和 B。
如果我从应用程序外部导航到 A,我想显示一个消息框。如果我从 B 导航到 A,我不想显示任何内容。
有没有办法在 A 中识别启动导航的页面?即在 A.Loaded (或任何其他事件)中,我需要类似的东西
if(pageFromWhichIAmComingFrom == B)
OnNavigatedTo、OnNavigationFrom 和 OnNavigatedFrom 似乎对我没有帮助。
我的申请中有 2 页,A 和 B。
如果我从应用程序外部导航到 A,我想显示一个消息框。如果我从 B 导航到 A,我不想显示任何内容。
有没有办法在 A 中识别启动导航的页面?即在 A.Loaded (或任何其他事件)中,我需要类似的东西
if(pageFromWhichIAmComingFrom == B)
OnNavigatedTo、OnNavigationFrom 和 OnNavigatedFrom 似乎对我没有帮助。
您可以使用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();
}
在这里找到。