【问题标题】:Skip the page in wp7 navigation stack跳过 wp7 导航堆栈中的页面
【发布时间】:2012-11-27 12:54:13
【问题描述】:

假设我有一个代码

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);
}

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

GoBack() 方法调用PhoneApplicationFrame.GoBack() 方法进行导航。

【问题讨论】:

    标签: c# windows-phone-7 navigation


    【解决方案1】:

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

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

    当用户第一次进入设置页面时,尝试删除返回堆栈条目(在您的情况下为主页)。

    您可以通过以下代码删除任何剩余的 backstack 条目:

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
    
        while (this.NavigationService.BackStack.Any())
        {
            this.NavigationService.RemoveBackEntry();
        }
    }
    

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

    【讨论】:

      【解决方案2】:

      这种方式不能强行退出。
      你可以做的是处理设置页面上的后退按钮按下并清除堆栈(这是允许的),然后让后退按钮被处理 - 因此用户将因为后退按钮而不是因为你的电话而退出.

      【讨论】:

        【解决方案3】:
        protected override void OnBackKeyPress(CancelEventArgs e)
            {
                while (NavigationService.CanGoBack)
                {
                    NavigationService.RemoveBackEntry();
                }
                base.OnBackKeyPress(e);
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-09
          • 2012-09-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多