以下是我的页面导航的方案:
MainPage(MP)< ==>位置(L)< ==> AddLocation(AL)
我不希望用户在按下手机上的后退按钮时转到AddLocation。
如果他们是MP并且他们回击,他们应该退出应用程序。
如果他们进入MP-> L并回击,他们应该去MainPage。
如果他们进入MP-> L-> AL并回击,他们应该去位置。
如果他们进入MP-> L-> AL-> L并回击,他们应该转到MainPage而不是回到AddLocations。
没错,我在Common文件夹中有标准的nav帮助器,然后我将此代码添加到Locations页面以实现此目的:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.navigationHelper.OnNavigatedTo(e);
var bs = Frame.BackStack.Where(b => b.SourcePageType.Name == "MainPage").FirstOrDefault();
if (bs!= null)
{
Frame.BackStack.Clear();
Frame.BackStack.Add(bs);
}
}
这对我来说似乎是一个可怕的黑客攻击,我确信有一些支持/设计的方法可以做到这一点,我不知道。我是WinRT和Xaml的新手。
答案 0 :(得分:4)
您的问题是went MP->L->AL->L and hit back, they should go to MainPage and not back to AddLocations
不是吗?
解决方案是:完成位置添加后,应从AddLocation页面转到位置页面。
但是你不应该使用Frame.Navigate(typeof(LocationPage));
来做这件事。
您应该使用Frame.GoBack();
,因此AddBocation Page将从BackStack auto中删除。