2011-12-07 72 views
0

我有一個WP 7.5應用程序。我有一個啓動畫面,然後是我的MainPage.xaml,它有一個版權聲明和開始按鈕。用戶點擊按鈕,它會轉到我們的主屏幕(Home.xaml),用戶可以在該屏幕上開始與應用程序的核心交互。跳過MainPage並轉到應用程序啓動時的第二個屏幕

我要的是:

1:版權屏幕即MainPage.xaml中應該只出現在第一次用戶在安裝後啓動應用程序。隨後從應用程序菜單或磁貼啓動後,我不想顯示版權頁面。

2:同樣的事情,一旦用戶單擊開始/接受按鈕並轉到Home.xaml,他或她不能通過單擊後退按鈕返回到MainPage.xaml,而是從主屏幕單擊返回,他們應該退出應用程序。

我做了什麼至今:

1:MainPage.xaml中的OnNavigateTo我檢查的ApplicationSetting鍵,showCopyright。如果找不到或者不真實,我什麼都不做。如果它是假的,那麼我使用NavigationService.Navigate到我的Home.xaml。

2:在開始/接受按鈕時,我將ApplicationSettings鍵設置爲false。

問題與上面的方法:

1:如果我使用後退按鈕從主屏幕,我進入無限循環。該應用程序應該退出,但它不會。

問題:

1:上述方法是對還是有更好的方法? 2:如果我在正確的方向,當我在Home.xaml上時,如何使我的應用程序退出後退按鈕?

謝謝,任何指針?

編輯:對於sake--我發現了大約從Windows Phone應用程序明確的退出一個很好的解釋here記錄。從WP7.1/7.5開始,沒有明確退出Silverlight WP應用程序的內置方式。

+1

可能重複http://stackoverflow.com/questions/6875875/exit-application-on-back-button-on-wp7 –

+1

@Xin:謝謝,這是大致相同的情況下。這些建議很有幫助。 – oms

回答

3

您可以在後退按鍵上移除新頁面(Home.xaml)中的導航服務的Backentry,從而使中斷成爲無限循環。

請添加以下代碼Home.xaml.cs並嘗試

//this works only in 7.1 SDK 
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e) 
     { 
      try 
      { 
       if (NavigationService.CanGoBack) 
        NavigationService.RemoveBackEntry(); 
       base.OnBackKeyPress(e); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Exception = " + ex.Message); 
      } 
     } 
+0

@oms,請使用上述相同的解決方案,但添加刪除NavigationService Back代碼並嘗試的代碼。 – Santhu

+0

謝謝Santhosh。這似乎正在解決問題,但有什麼副作用,我需要擔心,當使用它? – oms

+0

NavigationService.RemoveBackEntry();在某些情況下可能會拋出異常,您必須處理它。 – Santhu

0

看一看這篇文章,它表明你如何添加EULA /免責聲明頁面,有你正在尋找的功能爲:

http://bjorn.kuiper.nu/2011/09/09/wp7eula/

+0

謝謝,我也有類似的邏輯,但後來我打算去彈出所以我不必清除後臺。 – oms

+0

聽起來像一個有趣的方法,但我想彈出不會給你很大的空間來顯示EULA。 – invalidusername

+0

看來我幾乎可以在彈出窗口中顯示任何東西,並且可以使其覆蓋整個屏幕。我還沒有嘗試過。 – oms

相關問題