xmlns:ig="http://schemas.infragistics.com/xaml"
Infragistics Persistence Framework™ はひとつまたは複数のグループで複数のコントロールの設定を統合できます。この方法で、1 つのデータ ストアにアプリケーションの状態を保存する、または複数のコントロールの設定をグループ内で結合することが可能です。
このトピックは、PersistenceGroup オブジェクトを作成および使用して、ひとつのグループで 2 つの TextBox コンポーネント設定を結合する方法を示します。
WPF アプリケーション プロジェクトを作成します。
以下の NuGet パッケージをアプリケーションに追加します。
Infragistics.WPF.Persistence
NuGet フィードのセットアップと NuGet パッケージの追加の詳細については、NuGet フィード ドキュメントを参照してください。
UserControl タグの中に以下の名前空間を追加します。
XAML の場合:
xmlns:ig="http://schemas.infragistics.com/xaml"
ページで UserControl リソース コレクションを作成して PersistenceGroup を定義します。
x:Key 属性を保持グループの名前を付けて追加します。この名前はリソース ディクショナリでリソースとしてグループを一意に識別します。
アプリケーションが必要な数だけグループを追加できます。唯一必要なのは、一意の x:Key 属性を保たせなければならないことです。
この例で、コントロール設定を結合するために保持グループをひとつだけ追加します。
XAML の場合:
<UserControl.Resources>
<ig:PersistenceGroup x:Key="CPF_Group" />
</UserControl.Resources>
Grid コンテナーを作成します。
XAML の場合:
<Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- さらに要素を追加します -->
ページで 2 つの TextBox コントロールを追加し、PersistenceGroup 添付プロパティを使用して、UserControl リソース ディクショナリで静的なリソースとして定義されたひとつの保持グループにこれらのコントロールが属していることを指定します。
XAML の場合:
<StackPanel Grid.Row="0">
<TextBox x:Name="txtFirstName" igPersistence:PersistenceManager.PersistenceGroup="{StaticResource CPF_Group}" />
<TextBox x:Name="txtLastName" igPersistence:PersistenceManager.PersistenceGroup="{StaticResource CPF_Group}" />
</StackPanel>
保存とロードのために 2 つのボタンを追加します。
XAML の場合:
<StackPanel Orientation="Horizontal" Grid.Row="1">
<Button Content="Save" x:Name="BtnSave" Click="BtnSave_Click" Height="22" Width="100" />
<Button Content="Load" x:Name="BtnLoad" Click="BtnLoad_Click" Height="22" Width="100" />
</StackPanel>
以下の using/Import のディレクティブを追加します。これでメンバーの完全に記述された名前を入力する必要がなくなります。
Visual Basic の場合:
Imports Infragistics.Persistence
Imports System.IO
C# の場合:
using Infragistics.Persistence;
using System.IO;
いくつかのプライベート メンバーを定義します。
Visual Basic の場合:
' XAML UserControl Resources で定義された PersistenceGroup の名前
Private Const pGroup As String = "CPF_Group"
Private memoryStream As New MemoryStream()
' 同時に保存およびロードされるコントロールの設定をグループ化する PersistenceGroup オブジェクトを作成します
Private persistenceGroup As New PersistenceGroup()
C# の場合:
// XAML UserControl Resources で定義された PersistenceGroup の名前。
private const string pGroup = "CPF_Group";
private MemoryStream memoryStream = new MemoryStream();
// 同時に保存およびロードされるコントロールの設定をグループ化する PersistenceGroup オブジェクトを作成します
private PersistenceGroup persistenceGroup = new PersistenceGroup();
InitializeComponent() メソッドの後でページ コンストラクターに以下を追加します
Visual Basic の場合:
' ResourceDictionary からリソースとして XAML PersistenceGroup ですでに定義されています
persistenceGroup = TryCast(Me.Resources(pGroup), PersistenceGroup)
C# の場合:
// ResourceDictionary からリソースとして XAML PersistenceGroup ですでに定義されています
persistenceGroup = this.Resources[pGroup] as PersistenceGroup;
ボタンの Click イベントを処理して保持グループを保存およびロードします。
Visual Basic の場合:
Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
' MemoryStream オブジェクトに PersistenceGroup を保存します
memoryStream = PersistenceManager.Save(persistenceGroup)
End Sub
Private Sub BtnLoad_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
memoryStream.Position = 0
' MemoryStream オブジェクトから PersistenceGroup をロードします
PersistenceManager.Load(persistenceGroup, memoryStream)
End Subs
C# の場合:
private void BtnSave_Click(object sender, RoutedEventArgs e)
{
// MemoryStream オブジェクトに PersistenceGroup を保存します
memoryStream = PersistenceManager.Save(persistenceGroup);
}
private void BtnLoad_Click(object sender, RoutedEventArgs e)
{
memoryStream.Position = 0;
// MemoryStream オブジェクトから PersistenceGroup をロードします
PersistenceManager.Load(persistenceGroup, memoryStream);
}
アプリケーションを保存して実行します。画面上に 2 つの TextBox コントロールがあります。同じ値をタイプし、それらの構成を保存してからそれらに新しい値をタイプします。次に [ロード] ボタンをクリックします。保存された変更が復元されます。