在我的windows phone7(Silverlight)应用程序中我必须显示一个消息框询问,用户在退出应用程序之前确认(是/否)[在设备后退按钮上单击]。
问题是我必须使用自定义消息框(使用弹出窗口)来获取用户确认,并且我无法退出应用程序。(找不到会退出应用程序的方法,如dispose() or close()
)。
如果我不必使用自定义消息框,Device back key press event "OnBackKeyPress"
上我会使用以下逻辑并完成我的工作
MessageBoxResult res = MessageBox.Show("Do you want to Exit?", "Exit", MessageBoxButton.OKCancel);
if (res == MessageBoxResult.OK)
{
if (NavigationService.CanGoBack)
{
while (NavigationService.RemoveBackEntry() != null)
{
NavigationService.RemoveBackEntry();
}
}
}
else
{
e.Cancel = true;
}
问题是我需要使用自定义消息框并完成此工作。如果需要使用设备后退按钮实现退出应用程序的按钮,则会出现同样的问题。
我发现在几个帖子中建议抛出异常并完成此操作。以下是其中一些
http://mobile.dzone.com/articles/windows-phone-mango-sample-3
http://imaginativeuniversal.com/blog/post/2010/08/22/How-to-Quit-a-WP7-Silverlight-Application.aspx
我认为这不是一个好的做法,也不确定Windows市场是否会以这种方式进行认证。想听听曾经遇到过这个问题的想法,以及任何实现此目的的建议(终止申请)。谢谢inadvance .... !!!!
答案 0 :(得分:5)
如果您想提交到市场,由于以下认证要求,您会遇到一些问题:
5.2.4.2在应用程序的第一个屏幕上按“返回”按钮必须关闭应用程序。
5.2.2当用户导航离开应用程序时,操作系统关闭并终止Windows Phone应用程序。应用程序在关闭后启动时,其启动时间必须满足第5.2.1节 - 启动时间
中的要求5.2.3当用户按下“开始”按钮或设备超时导致锁定屏幕进入时,Windows Phone应用程序将被停用。 Windows Phone应用程序也会在其调用Launcher或Chooser API时停用。
这是几个无法显示消息框的情况。
技术上使用例外来终止应用是一种违规行为:
5.1.2应用程序必须处理.NET Framework引发的异常,而不是意外关闭。在认证过程中,监控应用程序是否意外关闭。意外关闭的应用程序无法通过认证。在处理异常后,应用程序必须继续运行并保持对用户输入的响应。
作为开发人员,您的部分工作是与用户沟通有关不切实际或不合理的要求。
答案 1 :(得分:1)
抱歉,没办法这样做。在芒果更新之前,您可以清除后台堆栈,然后以编程方式触发后退按钮。但是从SDK 7.1(wp7.5)开始,我们就不能再这样做了。
我的建议是创建一个自定义的异常类型ApplicationXExitException
并将其抛出以退出应用程序。自定义类型的原因是,当您从市场中提取异常日志时,您将知道那些确实是意外的异常崩溃应用程序,而不是故意退出应用程序的异常。
答案 2 :(得分:0)
您可以在自定义消息框关闭后挂钩事件。事件参数将保留有关用户选择的信息。根据您的不同,您将决定是否退出应用程序。