Dim memoryStream As MemoryStream = PersistenceManager.Save(xamTileManager1)
このトピックでは、 xamTileManager のレイアウトの保存方法と、その後 Infragistics® Control Persistence Framework を使用してレイアウトを復元する方法について説明します。フレームワークを使用したレイアウトの保存によって、ユーザーは各セッションのアプリケーション レイアウトを再構成する必要がなくなります。
以下の表には、このトピックの必須条件が示されています。
xamTileManager は、ユーザーによるタイトルの移動とサイズ変更が可能です。ランタイム時に状態を変更できる機能によって、レイアウトを完全にカスタマイズすることができます。セッション間にカスタム レイアウトが保存および読み込まれるため、ユーザーがアプリケーションを再起動するたびに xamTileManager のレイアウトの設定をする必要はありません。Infragistics Control Persistence Framework によって、xamTileManager のタイル レイアウトを保存およびロードすることができます。
レイアウトでタイルの状態の情報を保存するには、タイルに名前を付けるか、またはxamTileManager の添付プロパティである SerializationId プロパティを一意の文字列値に設定する必要があります。Name および SerializationId プロパティの両方を設定すると、SerializationId プロパティが優先されます。xamTileManager はタイルのシリアル ID を設定するためにいくつかの異なる方法を提供します。
xamTileManager によって公開されている添付の SerializationId プロパティを設定できます。xamTileManager の Items コレクションに DependencyObject クラスから派生する項目を手動で追加する時に、このアプローチを使用できます。
xamTileManager の SerializationIdPath プロパティを、データ項目によって公開されるプロパティの名前に設定できます。タイルを作成するためにデータに xamTileManager をバインドする時に、このアプローチを使用できます。
SavingItemMapping イベントを処理し、 SavingItemMappingEventArgs オブジェクトの SerializationId プロパティを設定できます。SavingItemMapping イベントを処理する場合、シリアライゼーション ID を特定の項目にマップするために LoadingItemMapping イベントを処理する必要もあります。
タイルに名前を付ける場合、あるいはシリアライゼーション ID を提供してもタイルを保存したくない場合、その SaveInLayout プロパティを False に設定します。
以下の表は、xamTileManager のレイアウトを保存およびロードするために使用できるメソッドを示しています。
xamTileManager の状態とタイトルのレイアウトを保存するためには、 PersistenceManager クラスの静的 Save メソッドを起動する必要があります。Save メソッドのオーバーロードがあり、これは PersistenceSettings 引数を受け入れ、また保存/除外するプロパティを構成するために使用されます。保持メソッドは、後で保持ロケーションに保存できる MemoryStream オブジェクトを返します。
注: アプリケーションのアーキテクチャによって、MemoryStream (XML ファイルまたはデータベースなど) を保持する方法に関して様々なアプローチを選択することができます。「レイアウトの保存とロード」サンプルを参照して、レイアウトをバイト配列に保持する方法を確認してください。
Save メソッドは PersistenceManager クラス経由でアクセスできます。
例の保存中にレイアウト プロパティを含む/除外する は、保持フレームワークを構成して、コントロールの状態を保存するときに一部のプロパティを無視する方法を示します。
xamTileManager の状態とタイトルのレイアウトをロードするためには、PersistenceManager クラスの静的 Load メソッドを起動する必要があります。また、PersistenceSettings クラスのインスタンスを引数として受け入れる Load メソッドのオーバーロードがあります。PersistenceSettings インスタンスを使用して、レイアウト内で保存または無視するプロパティを構成します。Save メソッドから返されたデータは Load メソッドに提供され (Stream オブジェクトとして)、コントロールの状態を復元します。
Load メソッドは PersistenceManager クラス経由でアクセスできます。
以下の表は、以下に提供されたコード例を示しています。
以下のコードは、以下のパラメーターと共に Save メソッドを使用して Save コントロールの状態を保存する方法を示しています。
状態が保持されるコントロール
Visual Basic の場合:
Dim memoryStream As MemoryStream = PersistenceManager.Save(xamTileManager1)
C# の場合:
MemoryStream memoryStream = PersistenceManager.Save(xamTileManager1);
以下のコードは、以下のパラメーターと共に Save メソッドを使用して Save コントロールの状態を保存する方法を示しています。
状態が保持されるコントロール
無視するプロパティを指定する、Persistence Settings オブジェクト
Visual Basic の場合:
' Persistence Settings オブジェクトを作成します Dim settings As New PersistenceSettings() ' 無視するものを除くすべてのプロパティを保存します settings.SavePersistenceOptions = Persistence.Primitives.PersistenceOption.AllButIgnored ' 「Left」プロパティを無視されるものとして追加します Dim prop1 As New PropertyNamePersistenceInfo() With { _ .PropertyName = "Left" _ } settings.IgnorePropertySettings.Add(prop1) ' 「Top」プロパティを無視されるものとして追加します Dim prop2 As New PropertyNamePersistenceInfo() With { _ .PropertyName = "Top" _ } settings.IgnorePropertySettings.Add(prop2) ' コントロールのプロパティをメモリ ストリームに保存します Dim memoryStream As MemoryStream = PersistenceManager.Save(xamTileManager1, settings)
C# の場合:
// Persistence Settings オブジェクトを作成します PersistenceSettings settings = new PersistenceSettings(); // 無視するものを除くすべてのプロパティを保存します settings.SavePersistenceOptions = Persistence.Primitives.PersistenceOption.AllButIgnored; // 「Left」プロパティを無視されるものとして追加します PropertyNamePersistenceInfo prop1 = new PropertyNamePersistenceInfo { PropertyName = "Left" }; settings.IgnorePropertySettings.Add(prop1); // 「Top」プロパティを無視されるものとして追加します PropertyNamePersistenceInfo prop2 = new PropertyNamePersistenceInfo { PropertyName = "Top" }; settings.IgnorePropertySettings.Add(prop2); // コントロールのプロパティをメモリ ストリームに保存します MemoryStream memoryStream = PersistenceManager.Save(xamTileManager1, settings);
以下のコードは、以下のパラメーターと共に Load メソッドを使用して Load コントロールの状態を保存する方法を示しています。
状態が復元されるコントロール
Visual Basic の場合:
PersistenceManager.Load(xamTileManager1, memoryStream)
C# の場合:
PersistenceManager.Load(xamTileManager1, memoryStream);