2011-03-12 48 views
1

我有首次啓動時顯示的登錄頁面。在用戶輸入他的憑證後,他被帶到應用程序的主頁面。此時,如果用戶按下後退鍵,我希望它跳過登錄頁面並退出。我嘗試了這裏建議的內容:Remove a page from Navigation Stack(在OnNavigatedTo中,使用NavigationService.GoBack()),但它會拋出一個異常,因爲後面堆棧中沒有其他東西。我讀了一些其他地方,不處理異常基本上是唯一的方式來關閉應用程序...以編程方式退出應用程序的第一頁

這種方法關閉應用程序的問題是,除了是一個黑客,它不會擊中Application_Closing( )所以我的狀態沒有保存。

任何人都知道如何在點擊後退鍵,保存狀態並退出應用程序時跳過登錄頁面?

在此先感謝!

回答

4

是的,這在WP7導航中已經成爲一個大問題 - 很多人都在抱怨這種類型的問題。要記住的關鍵是導航模擬網站的導航 - 它行爲不像用戶窗體,更像網頁和他們的靜態歷史記錄。

最簡單的方法是對用戶透明且易於使用的方法是將您首次登錄的頁面作爲位於實際主頁頂部的用戶控件引用(即不要使用phone:PhoneApplicationPage爲您的登錄頁面 - 只是您的主頁phone:PhoneApplicationPage的一部分的控制)。在主頁上的OnNavigatedTo中使用一個布爾值,表示「如果用戶未登錄,則顯示登錄控制,否則顯示主頁」。

在保存狀態(即墓碑)時,提出另一個問題,因爲這是另一個話題。

+0

謝謝,這似乎是最好的選擇。 – hajpoj

1

一般的最佳做法是不要在導航堆棧中使用任何你不想使用的頁面。

在我的情況下,我選擇使用彈出來託管我的登錄控制。如果他們沒有登錄,我從我的主頁彈出它。如果他們是我不顯示它。這樣,如果他們沒有登錄並回來,他們退出應用程序。但是,如果他們已經登錄並且在主頁面上看到了他們的數據,並且他們回來了,他們也會退出應用程序(看不到登錄頁面)。

0

對於登錄/主頁場景,您可以做的一件事是成功登錄,而不是導航到您稱爲「GoBack」的主頁,這會將他們帶回主頁,但會彈出登錄頁面導航堆棧並允許用戶在下一次按下後退按鈕時退出應用程序。

相關問題