リスト-詳細データ バインドの作成
リスト-詳細のデザインは、次の 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 キーを押して、アプリケーションをテストします。リスト ビューでアイテムをクリックし、対応する詳細ビューが更新されることを確認します。
リスト コントロールでアイテムを選択し、対応する詳細ビューを更新する
この手順では、2 階層のリスト-詳細ビューの作成方法を説明しました。3 階層のリスト-詳細ビューを作成することもできます。
詳細については、「試してみよう: 3 階層のリストと詳細のバインドの作成」を参照してください。
リストと詳細データを手動でバインドするには
データ ソースがない場合は、サンプル データ ソースを作成して、実行時に使用できるようにします。
詳細については、「サンプル データの生成」を参照してください。
[ツール] パネルの [ComboBox] など、リスト ビューを表示するのに使うコントロールを選択し、アートボードに描画します。
[オブジェクトとタイムライン] パネルで、新しいオブジェクトを右クリックし、[名前の変更] を選択してから新しい名前を入力し、Enter キーを押します。
ヒント : 作成されたオブジェクトに明示的な名前は付きません。オブジェクトの名前を変更して、詳細ビュー オブジェクトの DataContext プロパティにより参照される名前を作成できます。
[データ] パネルの [リスト モード] をクリックします。
[データ] パネルで、データ コレクション内からプロパティをリスト オブジェクトにドラッグします。
リスト モードでデータを [ComboBox] オブジェクトにドラッグする
[データ] パネルの [詳細モード] をクリックします。
[データ] パネルで、データ コレクション内のプロパティをアートボードにドラッグして Grid レイアウト パネルを作成するか、既存のレイアウト パネルにドラッグします。
レイアウト パネルに、各プロパティの名前と値を示す TextBlock コントロールが表示されます。
[ComboBox] のバインド作成後に詳細モードでデータをドラッグする
F5 キーを押して、アプリケーションをテストします。リスト オブジェクトで別のアイテムを選択しても、詳細ビューが更新されない場合は、次の手順に進みます。
詳細ビューを表すレイアウト パネル (通常は Grid オブジェクト) を選択します。
[プロパティ] パネルで DataContext プロパティの横にある [詳細オプション] をクリックし、[データ バインド] をクリックします。
[データ バインドの作成] ダイアログ ボックスの [要素プロパティ] タブをクリックします。
[シーン要素] でリスト オブジェクトを選択し、[プロパティ] で SelectedItem プロパティを選択します。
詳細オブジェクトとリスト オブジェクトの関係の作成
[OK] をクリックして、[データ バインドの作成]ダイアログ ボックスを閉じます。
詳細レイアウト パネルの子アイテムではすべて、リスト オブジェクトで選択されたアイテムのデータ コンテキストを使用します。
詳細レイアウト パネルの子アイテムが、対応するデータのプロパティにバインドされていることを確認します。子アイテムの中にはデータにバインドされていないものがあります。これは、このアイテムがデータのプロパティの名前の表示用だからです。一方、リスト オブジェクトで選択されたアイテムに対応するデータを表示する子アイテムは、データにバインドされている必要があります。たとえば、データのプロパティ名が表示されていない TextBlock の子アイテムの 1 つを選択して、[プロパティ] パネルで Text プロパティを見つけます。このプロパティが黄色い枠で囲まれていない場合は、TextBlock オブジェクトがデータにバインドされていません。TextBlock オブジェクトをバインドするには:
Text プロパティの横にある [詳細オプション ] をクリックし、[データ バインド] をクリックします。
[データ バインドの作成] ダイアログ ボックスの [明示的なデータ コンテキスト] タブをクリックします。
[フィールド] の [コレクション] を展開し、この TextBlock オブジェクトで表示するデータのプロパティを選択します。
[OK] をクリックして、[データ バインドの作成]ダイアログ ボックスを閉じます。
Text プロパティに黄色い枠が付き、プロパティにデータがバインドされたことを示します。
F5 キーを押して、アプリケーションをテストします。
関連項目
タスク
DataGrid コントロールの使用
TreeView コントロールを使用する
概念
Copyright ©2011 by Microsoft Corporation. All rights reserved.