c# - 跳过 wp7 导航堆栈中的页面

标签 c# windows-phone-7 navigation

假设我有一个代码

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    var userInfo = SettingsManager.Read<User>(SettingsManager.UserInfoSetting);

    if (e.NavigationMode == NavigationMode.Back && userInfo == null)
    {
        _mainViewModel.NavigationService.GoBack();
    }

    if (e.NavigationMode == NavigationMode.New && userInfo == null)
    {
        _mainViewModel.NavigationService.NavigateTo(new Uri(ViewModelLocator.SettingPageUrl, UriKind.Relative));
    }

    base.OnNavigatedTo(e);
}

当用户第一次运行应用程序时,他将被重定向到设置页面,现在它工作得很好。如果用户不想提供他的信息,他可以在这种情况下按后退按钮,我想跳过应用程序的主页并退出应用程序。如果我运行我收到的代码 InvalidOperationException CanGoBack 为 false 时无法返回。

GoBack() 方法调用 PhoneApplicationFrame.GoBack() 方法返回导航。

最佳答案

警告 - Windows 开发人员指南不建议删除 backstack 条目。因为您必须遵守后退按钮的自然行为。

链接 - https://learn.microsoft.com/en-us/windows/uwp/layout/navigation-history-and-backwards-navigation

当用户第一次进入设置页面时,尝试删除返回堆栈条目(在您的案例中是主页)。

您可以通过以下代码删除任何剩余的返回堆栈条目:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    while (this.NavigationService.BackStack.Any())
    {
        this.NavigationService.RemoveBackEntry();
    }
}

因此,当用户按下后退按钮时,应用程序应该退出,因为没有剩余的返回堆栈条目。

关于c# - 跳过 wp7 导航堆栈中的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13584683/

相关文章:

c# - 如何使用 LINQ to SQL 对分层数据进行查询?

c# - 来自 MYSQL Membership Provider 的自定义成员资格提供程序

c# - 执行多播委托(delegate)

windows-phone-7 - Windows Phone 屏幕锁定之前是否发生过任何事件?

c# - MVVM:哪个组件负责导航?

css - 导航菜单、CSS、背景图片和访问过的链接

c# - 带有 String.Join 的 IEnumerable 扩展方法返回 System.Collections.Generic.List`1[System.String]

css - 我有 3 个导航图标,当一个图标悬停在它上面时,它后面应该显示一个实心圆圈

ios - MvvMCross 向后导航多个 View 模型/截断导航堆栈

windows-phone-7 - BackgroundAudioPlayer 不会释放音乐文件