2012-08-16 121 views
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; 
      } 

的問題是我需要使用定製的消息框和done這項工作。如果需要實現按鈕退出應用程序而不使用設備返回按鈕,則會出現同樣的問題。

我發現在幾個帖子建議拋出異常,並做到這一點。以下是其中一些

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市場將證明這種方式。希望聽到曾經遇到過這個問題的人的想法,以及任何有關實現此目標的建議(終止應用程序)。提前致謝....!!!!

+0

不知道爲什麼這個匿名投票下來...... !!!!! – JibW 2012-08-16 13:29:08

+0

HI exacerbatedexpert謝謝。是的,我也不喜歡退出申請例外。不是一個好習慣。你有任何想法如何執行從應用程序的「退出」,因爲沒有方法可用(像處理/關閉)... – JibW 2012-08-16 13:41:47

+0

嗨繞過。事情是這是用戶需求。當用戶在主頁面時,如果他按下後退按鈕,我必須顯示一個彈出消息,詢問是否需要退出。如果「是」應該退出並且「否」不是。 – JibW 2012-08-16 14:00:28

回答

5

如果你要提交到市場你有一對夫婦因爲以下認證要求的問題:

5.2.4.2從應用程序的第一個屏幕按後退按鈕必須關閉應用。

5.2.2當用戶離開應用程序時,Windows Phone應用程序被操作系統關閉並終止。當應用程序在關閉後啓動時,其啓動時間必須符合第5.2.1節中的要求 - 啓動時間

5.2.3當用戶按下「開始」按鈕或設備超時導致鎖屏來搞。 Windows Phone應用程序也會停用,並調用Launcher或Chooser API。

這是一對夫婦的情況下,你只需不能顯示一個消息框。

和技術使用一個例外termniate應用程序是違反:

5.1.2應用程序必須處理由.NET Framework引起的異常,而不是意外關閉。在認證過程中,應用程序會受到意外關閉的監控。意外關閉的應用程序未通過認證。處理異常後,應用程序必須繼續運行並保持對用戶輸入的響應。

作爲一名開發人員,您的部分工作是與用戶溝通有關不切實際或不合理的要求。

+0

嗨,我試圖讓用戶確認只有當用戶在第一個屏幕時按下後退按鈕。不在5.2.2和5.2.3下解釋的情況下。你的意思是說5.2.4.2要求它在執行之前不能顯示消息(只是爲了得到確認)? – JibW 2012-08-16 15:39:32

+0

exacerbatedexpert已經非常清楚地解釋了它。如果您希望應用程序通過認證,請不要嘗試引入此對話框,並讓後退按鈕和主頁按鈕按預期退出應用程序。 – Gambit 2012-08-16 16:38:43

+2

WP用戶期望有一定的體驗。當您改變這種體驗,並且手機沒有按照他們期望的方式行事時(按回來關閉應用程序),您的用戶體驗就會降低。我見過的應用程序完全按照您所描述的內容進行操作 - 彈出一個確認信息,我覺得這很痛苦。我反悔,因爲我想關閉應用程序,編寫該應用程序的開發人員對我產生了不滿,並且得到了不太好的評價,因爲它不符合標準,造成了負面的體驗。現在你明白爲什麼你應該聽取exacerbatedexpert? – 2012-08-17 14:24:07

0

您可以在自定義消息框關閉後掛鉤事件。事件參數將保留關於用戶選擇的信息。取決於你將決定是否退出應用程序。

+0

嗨kvas,是的,我可以跟蹤用戶的選擇....我正在尋找一個代碼(方式)退出應用程序。 – JibW 2012-08-16 13:24:09

1

對不起,沒有辦法做到這一點。芒果更新之前,您可以清除後退堆棧,然後以編程方式觸發後退按鈕。但是從SDK 7.1(wp7.5)開始,我們不能再這樣做了。

我的建議是創建一個自定義異常類型ApplicationXExitException並拋出退出應用程序。究其原因,自定義類型是這樣,當你從市場上拉你的異常的記錄,你就會知道,確實是意外的異常崩潰的應用程序,你的VS異常有意退出該應用程序的人。

+0

喜米蘭,在測試中的應用項目,我只是說提到的「Microsoft.Xna.Framework.Game」當我做「新遊戲()。退出()」,它正確地從應用程序退出。仍然想知道哪種方式是正確的。是允許添加自定義異常退出APP的市場嗎? – JibW 2012-08-21 08:25:05

+1

請點擊這裏http://social.msdn.microsoft.com/forums/en-us/wpdevelop/thread/d66ff941-215a-4bb9-8364-2c2abdd5ea23/,IT不建議使用該功能。它不會通過認證過程。 – 2012-08-21 09:15:29

+0

嗨,您的意思是,如果實施例外(自定義)退出應用程序,它會在認證過程中被接受? – JibW 2012-08-21 10:28:58