ページ インスタンスごとに状態のセットを複数記憶する
更新 : 2007 年 11 月
このサンプルでは、単一のページ インスタンスの状態の複数のセットを記憶して、その間を移動する方法を示します。
このサンプルでは、Windows Presentation Foundation の特定の機能を示します。そのため、アプリケーション開発のベスト プラクティスに従っていません。Windows Presentation Foundation (WPF) と Microsoft .NET Framework のアプリケーション開発ベスト プラクティスの包括的な説明については、適宜、次のトピックを参照してください。
ユーザー補助 - 「ユーザー補助のベスト プラクティス」
ローカリゼーション - 「WPF のグローバリゼーションおよびローカリゼーションの概要」
パフォーマンス - 「WPF アプリケーションのパフォーマンスの最適化」
セキュリティ - 「Windows Presentation Foundation のセキュリティ」
サンプルのビルド
Windows ソフトウェア開発キット (SDK) をインストールして、そのビルド環境のコマンド ウィンドウを開きます。[スタート] メニューの [すべてのプログラム]、[Microsoft Windows SDK] の順にポイントし、[CMD シェル] をクリックします。
サンプルをハード ディスク ドライブにダウンロードします。通常は、ソフトウェア開発キット (SDK) のドキュメントからダウンロードします。
ビルド環境のコマンド ウィンドウからサンプルをビルドするには、サンプルのソース ディレクトリに移動します。コマンド プロンプトで「MSBUILD」と入力します。
Microsoft Visual Studio でサンプルをビルドするには、サンプル ソリューションかプロジェクト ファイルを読み込んで、Ctrl キーと Shift キーを押しながら B キーを押します。
サンプルの実行
コンパイルしたサンプルをビルド環境のコマンド ウィンドウから実行するには、サンプルのソース コード フォルダの下にある Bin\Debug または Bin\Release フォルダで .exe ファイルを実行します。
コンパイルしたサンプルを Visual Studio でデバッグしながら実行するには、F5 キーを押します。
解説
状態ナビゲーションを使用すると、コンテンツの一部分の状態に対する変更をナビゲーション履歴エントリとして記録しておき、後からそのエントリに移動できます。移動すると、ナビゲーション履歴エントリで記録された状態が復元されます。
このサンプルでは、リスト ボックスの選択された項目が変更されるときに記録される状態ナビゲーションを示します。各状態エントリがカスタム CustomContentState オブジェクトによって格納され、初期のエントリをナビゲーション履歴に追加するために AddBackEntry、エントリがナビゲーション間で保持されていることを確認するために GetContentState を呼び出します。また、"戻る" ナビゲーション履歴から状態ナビゲーション エントリを削除する方法も示します。
この方法は、単一のページ インスタンスの状態のセットを複数記憶して移動する必要が生じたときに最も有用です。ページ インスタンス間で状態の項目を 1 つ記憶する場合は、記録可能な依存関係プロパティの使用を検討してください (「ページ インスタンス間で状態の項目を 1 つ記憶する」を参照)。複数のページ インスタンス間で状態のセットを 1 つ記憶する場合は、IProvideCustomContentState の使用を検討してください (「ページ インスタンス間で状態のセットを 1 つ記憶する」を参照)。
重要 : |
---|
カスタム コンテンツ状態に情報を格納する場合は、ページから移動するときに、状態を記憶するページのインスタンスへの参照を格納しないでください。これは、WPF がそのページ インスタンスを解放できなくなり、ナビゲーション履歴の既定動作の目的が損なわれてしまうためです。参照を格納する必要がある場合は、代わりに KeepAlive の使用を検討してください。 |