我想阻止用户从一帧/页回到主页面。
例如,当用户成功登录时,他们将转到用户列表页面。
如果用户从用户列表页面按下硬件后退按钮,则他们不应该返回登录屏幕。如果他们这样做,程序应该提示两个按钮,是注销并返回登录屏幕,或者否,并保持在当前屏幕上。
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;
}
}
理论上,如果当前帧是用户列表页面,则不要返回。
如何阻止用户返回页面?
答案 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();手动,否则用户将被卡在该页面中。