2010-12-14 111 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

相关问题