按退回键,在退出应用程序之前显示CustomMessageBox

时间:2013-07-01 04:04:20

标签: windows-phone-7 windows-phone-8 exit messagebox back

我想在用户按下键时显示一个确认退出的对话框。我知道可以使用本机MessageBox来完成。但是,当我使用winphone工具包中的CustomMessageBox时,取消事件一旦取消就不会恢复。

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
    e.Cancel = true;
    CustomMessageBox messageBox = new CustomMessageBox()
        {
            Caption = "Exit",
            Message = "Do you want to exit?",
            LeftButtonContent = "Yes",
            RightButtonContent = "No"
        };
        messageBox.Dismissed += (s1, e1) =>
        {
            switch (e1.Result)
            {
                case CustomMessageBoxResult.LeftButton:
                  //app doesn't exit as expected
                    e.Cancel = false;
                    break;
                case CustomMessageBoxResult.RightButton:
                    break;
                case CustomMessageBoxResult.None:
                    break;
                default:
                    break;
            }
        };      
    messageBox.Show();
}

如果我没有取消该活动,该应用将退出而不显示消息框。如果我尝试调用Show然后锁定线程,则不会显示消息框。我知道我可以通过使用Terminate或异常来退出应用程序,但我也希望它正确退出以便可以调用Application_Closing。请帮忙!感谢。

2 个答案:

答案 0 :(得分:2)

我找到了这篇文章,并根据我的情况成功应用了它。 Using the CustomMessageBox in OnBackKeyPressed

答案 1 :(得分:0)

如果您使用自定义消息框,则除了取消后退事件之外别无选择。如果你这样做,那么你必须以编程方式退出应用程序,并提出你提到的问题。

没有办法摆脱那个。您需要释放UI线程,以便CustomMessageBox可以显示其控件,并且在您退出OnBackKeyPress事件之前该线程不会是空闲的。只需坚持本机消息框,它就是最好的。