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

时间:2016-02-17 20:20:46

标签: windows-8.1 user-input

我想阻止用户从一帧/页回到主页面。

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

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

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

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

如何阻止用户返回页面?

1 个答案:

答案 0 :(得分:1)

首先,您需要将事件附加到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();手动,否则用户将被卡在该页面中。