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 オブジェクトが関連付けられているかどうかを確認します。 その場合は、 を呼び出 Replay して、カスタム CustomContentState オブジェクトが前のナビゲーションから記憶した状態を適用できるようにします。
カスタム CustomContentState クラスをオーバーライド JournalEntryName して、オブジェクトが関連付けられているナビゲーション履歴エントリに表示される名前を CustomContentState 変更できます。 を返す JournalEntryName 値は、さまざまなナビゲーター (ブラウザー、、 NavigationWindowまたは Frame) のナビゲーション UI から表示されます。
から CustomContentState 派生するクラスはシリアル化可能である必要があります。つまり、少なくとも を使用して SerializableAttribute拡張し、必要に応じて を実装 ISerializableする必要があります。
重要
カスタム コンテンツ状態で情報を格納する場合、コンテンツをメモリに保持しない場合は、状態を記憶しているページのインスタンスへの参照を格納できません。 これにより、WPF でページ インスタンスが解放されるのを防ぎ、既定のナビゲーション履歴の動作の目的を無効にします。 これを行う必要がある場合は、代わりに を使用 KeepAlive することを検討してください。
コンストラクター
CustomContentState() |
CustomContentState クラスの新しいインスタンスを初期化します。 |
プロパティ
JournalEntryName |
ナビゲーション履歴に格納されているコンテンツの名前を取得します。 のJournalEntryName値は、ブラウザー ナビゲーション UI からFrameNavigationWindow表示されます。 |
メソッド
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
Replay(NavigationService, NavigationMode) |
ナビゲーションが発生したときに、コンテンツに状態を再適用するために呼び出されます。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
適用対象
こちらもご覧ください
.NET