阻止用户从一个页面转到另一个页面

Stop users going from one page to another page

我想阻止用户从一个 frame/page 回到上一页。

例如,当用户成功登录后,他们将转到用户列表页面。

如果用户从用户列表页面按下硬件后退按钮,则他们不应返回登录屏幕。如果他们这样做,程序应该用两个按钮提示,是注销并返回登录屏幕,或者否并留在当前屏幕。

        private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
    {
        Frame frame = Window.Current.Content as Frame;
        if (frame == null) return;

        //the current frame is UserList
        if (frame.Content is UserList)
        {
            messageBox("yes");
            e.Handled = true;
        }
        else if (frame.CanGoBack)
        {
            frame.GoBack();
            e.Handled = true;
        }
    }

理论上,如果当前框架是用户列表页,则不要返回。

如何阻止用户返回页面?

首先,您需要将事件附加到 Windows.UI.Xaml.Input 命名空间中可用的 HardwareButtons 后退按钮。在页面构造函数中的 InitializeComponent 调用下方添加此内容。

HardwareButtons.BackPressed += HardwareButtons_BackPressed;

如果您只处理事件,就足以防止用户使用硬件后退按钮返回。

private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
    e.Handled = true;
}

如果您不想让用户在上一页是登录页面时返回,您可以试试这个。

private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
    e.Handled = true;
    if (Frame.BackStack.Last().SourcePageType.Equals(typeof(LoginPage)))
    {
        //TODO: handle prompt
    } else {
        Frame.GoBack();
    }
}

ps: 如果你处理 e 你应该提供 Frame.GoBack();手动,否则用户将停留在该页面。