Windows Phone:如何留在当前页面而不是导航到另一个页面
本文关键字:导航 另一个 Windows 何留 当前页 Phone | 更新日期: 2023-09-27 18:26:43
我有两个页面(MainPage和page1)。当用户在页面1中时,如果用户按下后退键,将弹出以下消息:"您确定要退出吗?"
因此,如果用户按"确定",那么它应该导航到另一个页面,如果用户按下"取消",它应该停留在同一页面。这是我的代码:
这段代码是在Page1.Xaml:中编写的
Protected override void OnBackKeyPrss(System.ComponentModel.CancelEventArgs e)
{
MessageBoxResult res = MessageBox.show("Are you sure that you want to exit?",
"", MessageBoxButton.OkCancel);
if(res==MessageBoxResult.OK)
{
App.Navigate("/mainpage.xaml");
}
else
{
//enter code here
}
}
然而,当我按下cancel时,它仍然导航到mainpage.xaml。我该如何解决这个问题?
使用e.Cancel = true;
取消反向导航。
如果我错了,请纠正我。你的代码看起来一团糟。我认为您的最后一页/封底是mainpage.xaml
,在OK
中,您将再次导航到此页。如果是这种情况,则无需再次导航,您可以使用以下代码。
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
MessageBoxResult res = MessageBox.Show("Are you sure that you want to exit?",
"", MessageBoxButton.OKCancel);
if (res != MessageBoxResult.OK)
{
e.Cancel = true; //when pressed cancel don't go back
}
}
尝试这个
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
if (MessageBox.Show("Are you sure that you want to exit?", "Confirm", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
e.Cancel = true;
else
base.OnBackKeyPress(e);
}
对于经典的"确定要退出吗?"消息对话框,您需要覆盖OnBackKeyPress
事件并在其中使用自己的MessageBox
:
protected override void OnBackKeyPress(CancelEventArgs e)
{
var messageBoxResult = MessageBox.Show("Are you sure you want to exit?",
"Confirm exit action",
MessageBoxButton.OKCancel);
if (messageBoxResult != MessageBoxResult.OK)
e.Cancel = true;
base.OnBackKeyPress(e);
}
但我想指出导航逻辑以及你为什么做错了什么。如果我理解正确的话,MainPage
是应用程序启动时显示的第一个页面,Page1
是从MainPage
导航到它时显示的。
向后导航时,而不是
NavigationService.Navigate(new Uri("MainPage.xaml", UriKind.Relative));
(你没有这样写,但至少这是你应该写的,语法正确但逻辑错误)
应该这样做:
NavigationService.GoBack();
这是因为在你的应用程序中导航时,会有一个NavigationStack
(带有导航的页面),它只具有Push()
(向前导航)的操作,而不是Pop()
(向后导航)。
有关Windows Phone中的更多导航信息,请单击此处。