2010-12-14 164 views
13

我有這樣的應用模式:從導航堆棧中刪除網頁

[List Page] -> [Detail Page] -> [ShareOnFacebook Page] 
        ^__________________| 
  1. 用戶選擇在[List Page]
  2. Item用戶可能會或可能不會點擊Share按鈕,如果他或她不,該應用程序導航到[ShareOneFacebook page],其顯示Facebook登錄表單,發佈消息並返回導航
  3. 用戶導航返回。

如果用戶在Facebook上共享,它將「重新發布」消息,因爲應用程序存儲會話,因此它將導航回ShareOnFacebook,然後返回到我的詳細信息頁面。

如果用戶沒有共享,他會回到列表頁面。

如何在導航堆棧中「省略」ShareOnFacebook頁面?

+0

它的工作原理,但其相當的黑客攻擊。我喜歡能夠打電話完成然後移動的Android模型,很好地工作 – xximjasonxx 2011-08-25 01:02:34

回答

27

試試這個:OnNavigatedTo方法中調用NavigationService.RemoveBackEntry();。這將從堆棧中移除前一頁。在我看來,Navigation.GoBack();的技巧並不令人滿意,因爲它顯示了短時間內刪除的頁面。

注:我使用的NavigationServiceremoveBackEntry方法僅適用於Windows手機OS 7.1(芒果)SDK

+1

謝謝,我改變了批准的答案。我原來的問題是芒果之前,但我想現在新人需要這個答案 – 2012-11-01 04:55:03

3

我在我的應用程序中有類似的情況,我用一個非常簡單的解決方案解決它。

如果您想「跳過」您的後臺堆棧中的頁面,請在該頁面的NavigatedTo()函數中放置一些邏輯。

例如:您可以在發佈到Facebook時將bool設置爲true,然後將以下代碼放入ShareOnFacebook頁面的NavigatedTo()函數中。

這裏是僞代碼:

if (alreadyPosted) Navigation.GoBack();

的GoBack的()函數將跳過此頁面,並返回到前一個,用戶將不會看到頁面。

0

我發佈一個例子同樣的問題here.

非線性導航服務馬特聯基本上做同樣的事情,但會可能比我的簡單例子更好。

1

。我也用這樣的一種方式來建立我自己的閃屏

 private void BWorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
    { 
     // switch screen 
     NavigationService.Navigated += new NavigatedEventHandler(NavigationServiceNavigated); 
     NavigationService.Navigate(new Uri("/Pages/main.xaml", UriKind.Relative)); 

    } 

    void NavigationServiceNavigated(object sender, NavigationEventArgs e) 
    { 
     NavigationService.RemoveBackEntry(); 
    } 
3

看一看簡單的庫我寫了這樣的目的: http://navcoerce.codeplex.com/

var fluent = new FluentNavigation(RootFrame);       

fluent.WhenNavigatedTo<MainPage>()          
     .ThenTo<LoginPage>()            
     .ThenToAnyPage()             
     .RemoveEntriesFromBackStack(1);         

fluent.WhenNavigatedTo<MainPage>()          
     .ThenTo<LoginPage>()            
     .ThenTo<RegisterPage>()           
     .ThenTo<PaymentPage>()           
     .RemoveEntriesFromBackStackTill<MainPage>();      

fluent.WhenNavigatedTo<MainPage>()          
     .ThenTo<SecondPage>()            
     .ThenTo<RegisterPage>()           
     .ThenOptionallyTo<ForgotPasswordPage>()       
     .ThenToAnyPage()             
     .RemoveEntriesFromBackStackTill<MainPage>();      

fluent.WhenNavigatingTo<PaymentPage>()         
     .RedirectTo<LoginPage>();           

fluent.WhenNavigatingTo<PaymentPage>()         
     .If(() => false)             
     .RedirectWithReturnUri<LoginPage>("ReturnUri"); 
+0

嗨,項目還活着嗎? – 2013-10-17 20:19:33

+0

Vitalii,目前我不開發WP,所以我不對庫進行任何更改。但隨意分叉項目,我會接受任何可以幫助你和其他用戶的變化。 – Grigory 2013-10-18 10:02:49

+0

也許稍後 - 現在我正在尋找經過驗證的解決方案來處理導航。我有主樞軸泄漏,當它導航時,我有2個視圖。不知何故,使用流利沒有幫助我的情況。 – 2013-10-18 10:27:37

相關問題