阻止用户从一个页面转到另一个页面
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();手动,否则用户将停留在该页面。
我想阻止用户从一个 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();手动,否则用户将停留在该页面。