マスター詳細データ バインドの作成
マスターと詳細データのバインドは、次の 2 つの部分で構成されています。
アイテムの一覧を表示するマスター ビュー。通常、このアイテムはデータのコレクションです。
一覧で選択したアイテムの詳細を表示する詳細ビュー。
このユーザー ガイドは、マスターと詳細データをバインドしたデザインの例です。目次がマスター ビュー、表示されるトピックが詳細ビューになります。
Microsoft Expression Blend には、アートボードでこのようなビューをデザインするときに簡単にデータを追加できるように、[データ] パネルに 2 つのモードがあります。
[リスト] モードでは、[データ] パネルからドラッグするアイテムでマスター ビューを作成します。アイテムは、[ListBox]、[DataGrid]、[TreeView] コントロールにドラッグできます。アートボードの空白の部分にアイテムをドラッグすると、自動的に [ListBox] が作成されます。
[詳細] モードでは、[データ] パネルからドラッグするアイテムを含む [Grid] レイアウトパネルの詳細ビューを作成します。または、別のレイアウト パネル ([Canvas]など) を作成して、それにアイテムをドラッグすることもできます。
Expression Blend によって、マスター ビューを表示するオブジェクトの SelectedItem に [Grid] オブジェクトの [DataContext] プロパティが設定され、マスター ビューと詳細ビューの関係が自動的に構成されます。または、この関係を手動で構成することもできます。
![]() |
---|
Expression Blend には、マスターと詳細データを表示する簡単なデザインのサンプルが用意されているので、このデザインで使用するオブジェクトをカスタマイズできます。Expression Blend でサンプルを開くには、[ヘルプ] メニューの [ようこそ画面] をクリックして、[サンプル] タブ、[ColorSwatchSL] の順にクリックします。 |
マスターと詳細データを自動的にバインドするには
データ ソースがない場合は、サンプル データ ソースを作成して、実行時に使用できるようにします。
詳細については、「サンプル データの生成」を参照してください。
[データ] パネルの [リスト モード]
をクリックします。
ヒント :
[リスト モード] では、アートボードにドラッグするデータのアイテムは、独立したデータ バインドかマスター ビューの一部だとみなされます。これは、[データ] パネルの既定のモードです。
[データ] パネルで、データ コレクション内のプロパティをアートボードにドラッグして ListBox オブジェクトを作成するか、既存の [ListBox]
、[DataGrid]
、[TreeView]
オブジェクトのいずれかにドラッグします。
メモ :
[データ バインドの作成] ダイアログ ボックスが表示された場合は、[リスト モード] ではなく [詳細モード] になっている可能性があります。
オブジェクトに、各プロパティのデータ コレクションが表示されます。
リスト モードでデータを [ListBox] オブジェクトにドラッグする
リスト モードでデータを [DataGrid] オブジェクトにドラッグする
リスト モードでデータを [TreeView] オブジェクトにドラッグする
[データ] パネルの [詳細モード]
をクリックします。
ヒント :
[詳細モード] では、アートボードにドラッグするデータのアイテムは、詳細ビューの一部だとみなされます。[Grid] オブジェクトが作成され、データの各アイテムの子オブジェクトを表示します。[Grid] オブジェクトは、[リスト モード] で作成された最後のオブジェクトのデータ コンテキストと選択アイテムを使用するように自動的に構成されます。.
[データ] パネルで、データ コレクション内のプロパティをアートボードにドラッグして [Grid] レイアウト パネルを作成するか、既存のレイアウト パネルにドラッグします。
レイアウト パネルに、各プロパティの名前と値を示す [TextBlock] コントロールが表示されます。
[ListBox] のバインド作成後に詳細モードでデータをドラッグする
[DataGrid] のバインド作成後に詳細モードでデータをドラッグする
[TreeView] のバインド作成後に詳細モードでデータをドラッグする
F5 キーを押して、アプリケーションをテストします。マスター ビューでアイテムをクリックし、対応する詳細ビューが表示されることを確認します。
マスター コントロールでアイテムを選択し、対応する詳細ビューを表示する
マスターと詳細データを手動でバインドするには
データ ソースがない場合は、サンプル データ ソースを作成して、実行時に使用できるようにします。
詳細については、「サンプル データの生成」を参照してください。
[ツール] パネルの [ComboBox]
など、マスター ビューを表示するのに使うコントロールを選択し、アートボードに描画します。
[オブジェクトとタイムライン] パネルで、新しいオブジェクトを右クリックし、[名前の変更] を選択してから新しい名前を入力し、Enter キーを押します。
ヒント :
作成されたオブジェクトに明示的な名前は付きません。オブジェクトの名前を変更するには、詳細ビュー オブジェクトの [DataContext] プロパティで名前を作成します。
[データ] パネルの [リスト モード]
をクリックします。
[データ] パネルで、データ コレクション内からプロパティをマスター オブジェクトにドラッグします。
リスト モードでデータを [ComboBox] オブジェクトにドラッグする
[データ] パネルの [詳細モード]
をクリックします。
[データ] パネルで、データ コレクション内のプロパティをアートボードにドラッグして [Grid] レイアウト パネルを作成するか、既存のレイアウト パネルにドラッグします。
レイアウト パネルに、各プロパティの名前と値を示す [TextBlock] コントロールが表示されます。
[ComboBox] のバインド作成後に詳細モードでデータをドラッグする
F5 キーを押して、アプリケーションをテストします。マスター オブジェクトで別のアイテムを選択しても、詳細ビューが更新されない場合は、次の手順に進みます。
詳細ビューを表すレイアウト パネル (通常は [Grid] オブジェクト) を選択します。
[プロパティ] パネルで [DataContext] プロパティの横にある[詳細プロパティ オプション]
をクリックし、[データ バインド] をクリックします。
[データ バインドの作成] ダイアログ ボックスの [要素プロパティ] タブをクリックします。
[シーン要素] でマスター オブジェクトを選択し、[プロパティ] で [SelectedItem] プロパティを選択します。
詳細オブジェクトとマスター オブジェクトの関係の作成
[OK] をクリックして、[データ バインドの作成]ダイアログ ボックスを閉じます。
詳細レイアウト パネルの子アイテムではすべて、マスター オブジェクトの選択されたアイテムのデータ コンテキストを使用します。
詳細レイアウト パネルの子アイテムが、対応するデータのプロパティにバインドされていることを確認します。子アイテムの中にはデータにバインドされていないものがあります。これは、このアイテムがデータのプロパティの名前の表示用だからです。一方、オブジェクトで選択されたアイテムに対応するデータを表示する子アイテムは、データにバインドされている必要があります。たとえば、データのプロパティ名が表示されていない [TextBlock] の子アイテムの 1 つを選択して、[プロパティ] パネルで [Text] プロパティを確認します。このプロパティが黄色い枠で囲まれていない場合は、[TextBlock] オブジェクトがデータにバインドされていません。[TextBlock] オブジェクトをバインドするには
[Text] プロパティの横にある [詳細プロパティ オプション ]
をクリックし、[データ バインド] をクリックします。
[データ バインドの作成] ダイアログ ボックスの [明示的なデータ コンテキスト] タブをクリックします。
[フィールド] の [コレクション] を展開し、この [TextBlock] オブジェクトで表示するデータのプロパティを選択します。
[OK] をクリックして、[データ バインドの作成]ダイアログ ボックスを閉じます。
[Text] プロパティに黄色い枠が付き、プロパティにデータがバインドされたことを示します。
F5 キーを押して、アプリケーションをテストします。