2

我有两个页面(MainPage 和 page1)。当用户在第 1 页时,如果用户按返回键,应弹出以下消息:“您确定要退出吗?”

因此,如果用户按 OK,那么它应该导航到另一个页面,如果用户按 Cancel,它应该留在同一页面。这是我的代码:

此代码是用 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
      }

}

但是,当我按下取消时,它仍在导航到 mainpage.xaml。我怎么解决这个问题?

4

3 回答 3

1

用于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
    }
}
于 2013-08-07T04:34:48.917 回答
0

试试这个

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);
}
于 2013-08-07T04:47:16.477 回答
0

对于经典的“你确定要退出吗?” 消息对话框,您需要覆盖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是应用程序启动时显示的第一页,Page1MainPage.

向后导航时,而不是

NavigationService.Navigate(new Uri("MainPage.xaml", UriKind.Relative));

(你没有这样写,但至少这是你应该写的,语法正确但逻辑错误)

应该这样做:

NavigationService.GoBack();

这是因为在您的应用程序中导航时,将有一个NavigationStack(带有导航页面)只有Push()(向前导航)而不是Pop()(向后导航)的操作。

有关 Windows Phone 中的更多导航信息,请单击此处

于 2013-08-07T05:13:09.693 回答