我想在用户按下键时显示一个确认退出的对话框。我知道可以使用本机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。请帮忙!感谢。
答案 0 :(得分:2)
我找到了这篇文章,并根据我的情况成功应用了它。 Using the CustomMessageBox in OnBackKeyPressed
答案 1 :(得分:0)
如果您使用自定义消息框,则除了取消后退事件之外别无选择。如果你这样做,那么你必须以编程方式退出应用程序,并提出你提到的问题。
没有办法摆脱那个。您需要释放UI线程,以便CustomMessageBox可以显示其控件,并且在您退出OnBackKeyPress
事件之前该线程不会是空闲的。只需坚持本机消息框,它就是最好的。