CustomContentState クラス

定義

CustomContentState は、後続の各ナビゲーションでソース コンテンツを再度読み込まなくても、単一のソース コンテンツの異なる状態間を移動できるようにします。

public ref class CustomContentState abstract
[System.Serializable]
public abstract class CustomContentState
public abstract class CustomContentState
[<System.Serializable>]
type CustomContentState = class
type CustomContentState = class
Public MustInherit Class CustomContentState
継承
CustomContentState
属性

オーバーライドする実装の例を CustomContentState 次に示します JournalEntryName

using System;
using System.Windows.Controls;
using System.Windows.Navigation;
[Serializable]
public class MyCustomContentState : CustomContentState
{
    string dateCreated;
    TextBlock dateTextBlock;

    public MyCustomContentState(string dateCreated, TextBlock dateTextBlock)
    {
        this.dateCreated = dateCreated;
        this.dateTextBlock = dateTextBlock;
    }

    public override string JournalEntryName
    {
        get
        {
            return "Journal Entry " + this.dateCreated;
        }
    }

    public override void Replay(NavigationService navigationService, NavigationMode mode)
    {
        this.dateTextBlock.Text = this.dateCreated;
    }
}

Imports System.Windows.Controls
Imports System.Windows.Navigation
<Serializable>
Public Class MyCustomContentState
    Inherits CustomContentState
    Private dateCreated As String
    Private dateTextBlock As TextBlock

    Public Sub New(ByVal dateCreated As String, ByVal dateTextBlock As TextBlock)
        Me.dateCreated = dateCreated
        Me.dateTextBlock = dateTextBlock
    End Sub

    Public Overrides ReadOnly Property JournalEntryName() As String
        Get
            Return "Journal Entry " & Me.dateCreated
        End Get
    End Property

    Public Overrides Sub Replay(ByVal navigationService As NavigationService, ByVal mode As NavigationMode)
        Me.dateTextBlock.Text = Me.dateCreated
    End Sub
End Class

注釈

既定では、 NavigationService ナビゲーション履歴にコンテンツ オブジェクトのインスタンスは格納されません。 代わりに、 NavigationService ナビゲーション履歴を使用して移動するたびに、コンテンツ オブジェクトの新しいインスタンスを作成します。 この動作は、大量のコンテンツや大量のコンテンツが移動しているときに、過剰なメモリ消費を回避するように設計されています。 その結果、コンテンツの状態は、あるナビゲーションから次のナビゲーションに記憶されません。 ただし、WPF では、カスタム状態の一部をコンテンツのナビゲーション履歴エントリに関連付けることができます。

ナビゲーション履歴エントリに関連付けられているカスタム状態は、派生 CustomContentState元のクラスである必要があります。 次のいずれかの方法を CustomContentState 使用して、オブジェクトをナビゲーション履歴エントリに関連付けます。

注意

AddBackEntry メソッドを呼び出す場合は、ナビゲーション イベントを 処理するか、実装IProvideCustomContentStateする必要があります。

ナビゲーション履歴エントリに移動すると、WPF はカスタム CustomContentState オブジェクトが関連付けられているかどうかを確認します。 その場合は、カスタム CustomContentState オブジェクトが前のナビゲーションから記憶した状態を適用することを許可するように呼び出Replayします。

カスタム CustomContentState クラスをオーバーライド JournalEntryName して、オブジェクトが関連付けられているナビゲーション履歴エントリに表示される名前を CustomContentState 変更できます。 返されるJournalEntryName値は、さまざまなナビゲーター (Internet Explorer 7、、、NavigationWindowFrame) のナビゲーション UI から表示されます。

派生 CustomContentState 元のクラスはシリアル化可能である必要があります。つまり、少なくともそれを拡張 SerializableAttributeし、必要に応じて実装 ISerializableする必要があります。

重要

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

コンストラクター

CustomContentState()

CustomContentState クラスの新しいインスタンスを初期化します。

プロパティ

JournalEntryName

ナビゲーション履歴に格納されるコンテンツの名前。 の値JournalEntryNameは、Internet Explorer 7 ナビゲーション UI から、およびWindows表示されますNavigationWindowFrame

メソッド

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
Replay(NavigationService, NavigationMode)

ナビゲーションが発生したときに、コンテンツに状態を再適用するために呼び出されます。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください