c# - 如何在 Windows Phone 8.1 通用商店应用程序中正确导航后退堆栈

标签 c# windows-phone-8.1 win-universal-app

这是我的页面导航场景:

主页 (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/

相关文章:

c# - 为什么枢轴项中的 Frame 属性为空?

c# - 在 Windows Phone 8.1 中向左或向右滑动

c# - 页面导航WP8.1

c# - Windows 10通用应用程序。如何触发后台任务?

c# - UWP:从主窗口控制第二个窗口

c# - 实例化所有实现通用接口(interface)实例的类

c# - 如何检查 SQL 实例是否正在远程机器上运行

c# - 克隆 Windows 应用商店应用程序 - 应该更改哪些内容?

c# - 尝试从 Visual Studio 2017 本地运行 Azure Function App 会出现 'func.exe does not exist' 错误

c# - 重定向前的时间延迟