1

5ページを含むアプリがあり、最後のページはサインアウトと呼ばれるため、サインアウトをクリックすると、すべてのページスタックが削除され、ページ1からナビゲートが開始されます.

例: page-1 MainMenu

page-2 アイテムのリスト。

page-3 (Facebook と twiter の) 共通の共有オプション

page-4 最高獲得ポイントのポイント表示一覧。

page-5 サインアウト。

サインアウトをクリックすると、ログインページに移動します。ログインすると、ページ-5にリダイレクトされます。

私の質問は、ページ2にリダイレクトしたいということです。どうすればこれを行うことができますか。

私は試していた

        foreach (var journalEntry in ((PhoneApplicationFrame)Application.Current.RootVisual).BackStack)
        {
            ((PhoneApplicationFrame)Application.Current.RootVisual).RemoveBackEntry();
        }

しかし、それは私の問題を解決しません。

ありがとうございました..!!

4

4 に答える 4

1

メソッドを使用してBackStackからエントリを削除できますNavigationService.RemoveBackEntry

于 2012-05-22T12:20:21.140 に答える
1

foreach問題の一部は、ループ内のコレクションを変更していて、それが機能しない可能性があります。

これは、一般的な状況でのいくつかのオプションを提供するSOの質問です。要点は、逆方向に for ループを使用するか、これらの個別のコレクションに対して.ToArray()orを呼び出し.ToList()て実行することです。foreach

ただし、この状況で私が行うことは次のとおりです。

while (NavigationService.CanGoBack)
{
  NavigationService.RemoveBackEntry();
}
于 2012-05-22T18:00:32.453 に答える
1

ページ スタックから複数のページ (「タスク」) を削除するために、このメソッドを作成しました。

/// <summary>
        /// Decreases the back stack entry count, leaving the amount of items on the stack equilivent to the <param name="leaveAmount">leaveAmount</param>.
        /// </summary>
        /// <exception cref="NotSupportedException">A value less than 0 is provided</exception>
        /// <param name="leaveAmount">The leave amount.</param>
        /// <param name="whenFinished"> </param>
        public static void DecreaseBackStackEntryCount(int leaveAmount, Action whenFinished = null)
        {
            if (leaveAmount < 0)
            {
                throw new NotSupportedException("cannot remove every item on stack");
            }
            Deployment.Current.Dispatcher.BeginInvoke(() =>
                                                          {
                                                              try
                                                              {
                                                                  while (((PhoneApplicationFrame)Application.Current.RootVisual).BackStack.Count() > leaveAmount)
                                                                  {
                                                                      try
                                                                      {
                                                                          ((PhoneApplicationFrame) Application.Current.RootVisual).RemoveBackEntry();
                                                                      }
                                                                      catch (InvalidOperationException)
                                                                      {
                                                                          return;
                                                                      }
                                                                  }

                                                              }
                                                              catch
                                                              {
                                                              }
                                                              finally
                                                              {
                                                                  if (whenFinished != null)
                                                                  {
                                                                        whenFinished.Invoke();
                                                                  }
                                                              }
                                                          });
        }

5ページで、次のように使用します:(サインアウト後にメインメニューに戻ろうとしていると思います..そうでない場合は、メソッドの署名を読んでください)

DecreaseBackstackEntryCount(1,() => NavigationService.GoBack());
于 2012-05-22T15:22:13.247 に答える
1

次の「Windows Phone Silverlight アプリケーションでの循環ナビゲーションの解決」を読むことに興味があるかもしれません:-

http://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/12/13/solving-circular-navigation-in-windows-phone-silverlight-applications.aspx

于 2012-05-22T12:21:24.913 に答える