8

这是我的页面导航的场景:

MainPage (MP) <==> Locations (L) <==> AddLocation (AL)

我不希望用户在点击手机上的后退按钮时去 AddLocation。

如果他们在 MP 上并且他们回击,他们应该退出应用程序。

如果他们去 MP->L 并回击,他们应该去 MainPage。

如果他们去 MP->L->AL 并回击,他们应该去地点。

如果他们去 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);
    }
}

这对我来说似乎是一个可怕的黑客攻击,我确信有一些我不知道的支持/设计的方法来做到这一点。我对 WinRT 和 Xaml 很陌生。

4

1 回答 1

4

你的问题是went MP->L->AL->L and hit back, they should go to MainPage and not back to AddLocations不是?

解决方案是:添加完位置后,您应该从 AddLocation Page 转到 Locations Page。

但你不应该用它Frame.Navigate(typeof(LocationPage));来做到这一点。

您应该使用Frame.GoBack();,因此 AddLocation Page 将从 BackStack auto 中删除。

于 2014-05-27T03:50:42.473 回答