1

Metro スタイル アプリケーションで backStack エントリの削除を実装するにはどうすればよいですか?

4

3 に答える 3

1
frame.SetNavigationState("1,0");

ナビゲーション履歴がクリアされます。

于 2012-10-22T16:29:57.467 に答える
1

この回答は役に立ちました:

フレームのバックスタックをクリアして最初からやり直す方法

独自の NavigationService を作成し、ナビゲーション状態をコンストラクターに格納します。

string state;

public NavigationService(Frame mainFrame)
{
    state = mainFrame.GetNavigationState();

_mainFrame = mainFrame;
_mainFrame.Navigating += _mainFrame_Navigating;
}

次に、このメソッドをサービスに実装し、必要に応じて呼び出します。

    public void ClearBackstack()
    {
        _mainFrame.SetNavigationState(state);
    }
于 2012-11-20T16:45:58.157 に答える
0

それは不可能のようです。バック スタックを完全にクリアする場合 (たとえば、「ホーム」ボタンがある場合)、グリッド サンプル アプリの LayoutAwarePage.cs ファイルで提供されているコードを使用できます。

if (this.Frame != null)
{
    while (this.Frame.CanGoBack) this.Frame.GoBack();
}

これは実際にスタックをクリアするわけではありませんが、プログラムの開始位置に戻るので、リストに逆方向のエントリはもうありません。ボタンを押して行き止まりのページから戻りたい場合は、この動作を変更して、いくつかのページを戻し、バック エントリを効果的に削除することができます。

于 2012-10-22T10:50:39.647 に答える