CustomContentState クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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 の 呼び出し:
次のいずれかのイベントが発生したときに設定 NavigatingCancelEventArgs.Content します。
カスタム状態を関連付けるクラスに実装 IProvideCustomContentState します。
注意
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) |