这是我的页面导航场景:
主页 (MP) <==> 位置 (L) <==> 添加位置 (AL)
我不希望用户在点击手机上的后退按钮时转到 AddLocation。
如果他们在 MP 上并反击,他们应该退出应用。
如果他们转到 MP->L 并反击,他们应该转到 MainPage。
如果他们去 MP->L->AL 并反击,他们应该去 Locations。
如果他们转到 MP->L->AL->L 并进行反击,他们应该转到 MainPage 而不是返回到 AddLocations。
不对,我在 Common 文件夹中有标准的导航助手,然后我将这段代码添加到 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);
}
}
这对我来说似乎是一个可怕的 hack,我确信有一些我不知道的受支持/设计的方法可以做到这一点。我对 WinRT 和 Xaml 还很陌生。
最佳答案
您的问题是进入 MP->L->AL->L 并返回,他们应该转到 MainPage 而不是返回到 AddLocations
,不是吗?
解决办法是:当你添加完位置后,你应该从AddLocation Page去到Locations Page。
但是您不应该使用 Frame.Navigate(typeof(LocationPage));
来执行此操作。
你应该使用 Frame.GoBack();
,所以 AddLocation Page 将从 BackStack auto 中移除。
关于c# - 如何在 Windows Phone 8.1 通用商店应用程序中正确导航后退堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23879452/