方法: WPF アプリケーションでルックアップ テーブルを作成する
[データ ソース] ウィンドウ内の親テーブルまたは親オブジェクトのメイン ノードを、関連する子テーブルの列またはプロパティにバインドされたコントロールにドラッグすると、ルックアップ テーブルを作成できます。ルックアップ テーブル (検索バインドと呼ばれることもあります) とは、あるテーブルの外部キー フィールドの値に基づいて別のデータ テーブルの情報を表示するコントロールを表します。
たとえば、販売データベースの Orders テーブルであれば、次のように使用されます。Orders テーブルの各レコードには、注文した顧客を表す CustomerID が含まれます。CustomerID は、Customers テーブルの顧客レコードを指す外部キーです。Orders テーブルの注文の一覧を表示する場合に、CustomerID ではなく、実際の顧客名を表示できます。顧客名は Customers テーブルに格納されているため、顧客名を表示するにはルックアップ テーブルを作成する必要があります。ルックアップ テーブルでは、Orders レコードの CustomerID の値を使用してリレーションシップをたどり、わかりやすい顧客名を返します。
ルックアップ テーブルを作成するには
プロジェクトに、関連データを持つ次のいずれかの種類のデータ ソースを追加します。
データセットまたは Entity Data Model。詳細については、「方法 : データベース内のデータに接続する」を参照してください。
WCF データ サービス、WCF サービス、または Web サービス。詳細については、「方法: サービスのデータに接続する」を参照してください。
オブジェクト。詳細については、「方法: オブジェクトのデータに接続する」を参照してください。
[!メモ]
ルックアップ テーブルを作成するには、関連する 2 つのテーブルまたはオブジェクトがプロジェクトのデータ ソースとして存在している必要があります。
WPF デザイナーを開き、[データ ソース] ウィンドウ内の項目に対して有効なドロップ ターゲットとなるコンテナーが、WPF デザイナーに含まれていることを確認します。
有効なドロップ ターゲットの詳細については、「Visual Studio でのデータへの WPF コントロールのバインド」を参照してください。
[データ] メニューの [データ ソースの表示] をクリックして [データ ソース] ウィンドウを開きます。
[データ ソース] ウィンドウで、親テーブルまたは親オブジェクトと関連する子テーブルまたは子オブジェクトが表示されるまでノードを展開します。
[!メモ]
関連する子テーブルまたは子オブジェクトは、親テーブルまたは親オブジェクトの下に展開可能な子ノードとして表示されるノードです。
子ノードのドロップダウン メニューをクリックし、[詳細] を選択します。
子ノードを展開します。
子ノードの下で、子と親のデータを関連付けている項目のドロップダウン メニューをクリックします (上の例の場合、これは [CustomerID] ノードになります)。検索バインドをサポートする次のいずれかの種類のコントロールを選択します。
ComboBox
ListBox
ListView
[!メモ]
ListBox コントロールまたは ListView コントロールが一覧に表示されない場合は、これらのコントロールを一覧に追加できます。詳細については、「方法 : [データ ソース] ウィンドウからドラッグしたときに作成されるコントロールを設定する」を参照してください。
Selector から派生した任意のカスタム コントロール。
[!メモ]
[データ ソース] ウィンドウの項目に対して選択できるコントロールの一覧にカスタム コントロールを追加する方法については、「方法: [データ ソース] ウィンドウにカスタム コントロールを追加する」を参照してください。
[データ ソース] ウィンドウから、WPF デザイナー内のコンテナーに子ノードをドラッグします (上の例の場合、子ノードは [Orders] ノードです)。
ドラッグした各項目に対して新しいデータ バインド コントロールを作成する XAML が、Visual Studio によって生成されます。さらに、この XAML により、子テーブルまたは子オブジェクトの新しい CollectionViewSource がドロップ ターゲットのリソースに追加されます。一部のデータ ソースでは、Visual Studio により、テーブルまたはオブジェクトにデータを読み込むコードも生成されます。詳細については、「Visual Studio でのデータへの WPF コントロールのバインド」を参照してください。
[データ ソース] ウィンドウから、前の手順で作成した検索バインド コントロールに親ノードをドラッグします (上の例の場合、親ノードは [Customers] ノードです)。
Visual Studio は、コントロールのいくつかのプロパティを設定して検索バインドを構成します。Visual Studio によって変更されるプロパティを次の表に示します。必要に応じて、これらのプロパティを XAML または [プロパティ] ウィンドウで変更できます。
プロパティ
設定の説明
このプロパティは、コントロールに表示するデータの取得に使用するコレクションまたはバインドを指定します。このプロパティは、Visual Studio によって、コントロールにドラッグした親データの CollectionViewSource に設定されます。
このプロパティは、コントロールに表示するデータ項目のパスを指定します。このプロパティは、Visual Studio によって、親データ内で主キーの後にあり、文字列データ型を含んでいる最初の列またはプロパティに設定されます。
親データの別の列またはプロパティを表示する場合は、このプロパティを別のプロパティのパスに変更します。
このプロパティは、Visual Studio によって、デザイナーにドラッグした子データの列またはプロパティにバインドされます。この列またはプロパティが、親データの外部キーになります。
このプロパティは、Visual Studio によって、親データの外部キーである子データの列またはプロパティのパスに設定されます。
参照
処理手順
方法: Visual Studio でデータに WPF コントロールをバインドする
チュートリアル: WPF アプリケーションでの関連データの表示