1

在我的 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 市场是否会以这种方式进行认证。想听听曾经经历过这个问题的人的想法,以及任何建议来实现这个(终止应用程序)。提前致谢....!!!!

4

3 回答 3

5

如果您想提交到 Marketplace,由于以下认证要求,您会遇到一些问题:

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 引发的异常并且不会意外关闭。在认证过程中,会监控应用程序是否意外关闭。意外关闭的应用程序无法通过认证。处理异常后,应用程序必须继续运行并保持对用户输入的响应。

作为开发人员,您的部分工作是与用户沟通不切实际或不合理的要求。

于 2012-08-16T14:26:48.233 回答
1

对不起,没有办法做到这一点。在芒果更新之前,您可以清除后退堆栈,然后以编程方式触发后退按钮。但从 SDK 7.1 (wp7.5) 开始,我们不能再这样做了。

我的建议是创建一个自定义异常类型ApplicationXExitException并抛出它以退出应用程序。使用自定义类型的原因是,当您从市场中提取异常日志时,您会知道哪些确实是意外异常导致应用程序崩溃,而哪些异常是故意退出应用程序。

于 2012-08-21T02:27:53.983 回答
0

您可以在自定义消息框关闭后挂钩事件引发。事件参数将保留有关用户选择的信息。取决于您将决定是否退出应用程序。

于 2012-08-16T13:11:30.700 回答