1

当用户按下返回键时,我想显示一个对话框以确认退出。我知道这可以通过使用本机 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 或 exception 来退出应用程序,但我也希望它正确退出,以便可以调用 Application_Closing。请帮忙!感谢。

4

2 回答 2

2

我找到了这篇文章,并根据我的情况成功应用了它。 在 OnBackKeyPressed 中使用 CustomMessageBox

于 2013-11-07T11:01:40.173 回答
0

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

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

于 2013-07-01T06:06:20.483 回答