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

マーケットプレイスに提出する場合、次の認定要件のためにいくつかの問題があります。

5.2.4.2 アプリケーションの最初の画面から [戻る] ボタンを押すと、アプリケーションを閉じる必要があります。

5.2.2 Windows Phone アプリケーションは、ユーザーがアプリケーションから離れたときに OS によって閉じられ、終了されます。アプリケーションが閉じられた後に開始される場合、その起動時間はセクション 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

申し訳ありませんが、これを行う方法はありません。mango update の前に、バックスタックをクリアしてから、プログラムで [戻る] ボタンをトリガーできます。しかし、SDK 7.1 (wp7.5) ではこれを行うことができなくなりました。

カスタム例外タイプを作成し、ApplicationXExitExceptionそれをスローしてアプリを終了することをお勧めします。カスタム タイプの理由は、マーケットプレイスから例外ログを取得するときに、アプリをクラッシュさせる意図しない例外と、意図的にアプリを終了する例外であることがわかるようにするためです。

于 2012-08-21T02:27:53.983 に答える
0

カスタム メッセージ ボックスが閉じた後に発生するイベントをフックできます。イベント引数は、ユーザーの選択に関する情報を保持します。それに応じて、アプリを終了するかどうかを決定します。

于 2012-08-16T13:11:30.700 に答える