次の方法で共有


IProvideCustomContentState インターフェイス

定義

コンテンツから移動する前にそのコンテンツのナビゲーション履歴エントリにカスタム状態を追加する必要があるクラスによって実装されます。

public interface class IProvideCustomContentState
public interface IProvideCustomContentState
type IProvideCustomContentState = interface
Public Interface IProvideCustomContentState

注釈

IProvideCustomContentState を使用すると、カスタムクラスとして実装されたカスタム CustomContentState 状態の一部を、移動先のコンテンツのナビゲーション履歴エントリに関連付けることができます。

カスタム状態は、次のように関連付けることもできます。

AddBackEntry を呼び出してナビゲーション履歴にカスタム状態を追加する場合は実装IProvideCustomContentStateする必要があります。そうしないと、ナビゲーション履歴が正しく機能しません。次の手順を検討してください。

  1. AddBackEntry は、カスタム状態を現在のコンテンツに関連付けるために呼び出されます。

  2. ナビゲーション履歴エントリに戻り、 Replay カスタム状態のメソッドが呼び出され、状態がコンテンツに適用されます。

  3. 前のコンテンツは、前方ナビゲーション履歴に移動されます。

  4. ナビゲーション履歴エントリに戻りますが、関連付けられたナビゲーション履歴エントリが最後に移動されてから、カスタム状態は保持されていません。

これは既定の動作です。カスタム状態で最初に記録された状態は、ナビゲーション履歴に追加された後に変更される可能性があるためです。 カスタム状態オブジェクトに戻り、その状態が適用されている場合、ナビゲーション履歴のエントリが移動される前に状態に関する一部の側面が変更される前に、状態の変更をカスタム状態オブジェクトに反映できません。 さらに、 AddBackEntry 状態の変更を反映する新しいカスタム状態オブジェクトを追加するために明示的に呼び出すことはできません。 そのため、特定のナビゲーションの現在の状態が常にナビゲーション履歴に格納されるようにするために、 GetContentState 呼び出されます。

重要

カスタム コンテンツ状態で情報を格納する場合、状態を記憶しているページのインスタンスへの参照を格納することはできません。 これにより、WPF によってページ インスタンスが解放されるのを防ぎ、既定のナビゲーション履歴の動作の目的を打ち破ります。 これを行う必要がある場合は、代わりに使用 KeepAlive することを検討してください。

メソッド

GetContentState()

ナビゲーション履歴のコンテンツに関連付けられる、カスタム状態クラスのインスタンスを返します。

適用対象