.NET Framework WPF アプリケーションで検索テーブルを作成する
Note
データセットと関連クラスは、アプリケーションがデータベースから切断されている間にアプリケーションがメモリ内のデータを操作できるようにする、2000 年代初期からのレガシ .NET Framework テクノロジです。 テクノロジが特に役立つのは、ユーザーがデータを変更し、変更をデータベースに戻して保持できるようにするアプリケーションです。 データセットは非常に優れたテクノロジであることが証明されていますが、新しい .NET アプリケーションでは Entity Framework Core を使用することをお勧めしています。 Entity Framework には、オブジェクト モデルとして表形式データを操作する、より自然な方法が用意されており、よりシンプルなプログラミング インターフェイスが備わっています。
"ルックアップ テーブル" ("参照バインディング" と呼ばれることもあります) という用語は、別のテーブルの外部キー フィールドの値に基づいて、データ テーブルからの情報を表示するコントロールを表します。 ルックアップ テーブルを作成するには、 [データ ソース] ウィンドウの親テーブルまたはオブジェクトのメイン ノードを、関連する子テーブルの列またはプロパティに既にバインドされているコントロールにドラッグします。
たとえば、販売データベースの Orders
テーブルであれば、次のように使用されます。 Orders
テーブルの各レコードには、注文した顧客を示す CustomerID
が含まれています。 CustomerID
は、Customers
テーブルの顧客レコードを指す外部キーです。 Orders
テーブルから注文の一覧を表示するときに、CustomerID
ではなく、実際の顧客名を表示したい場合があります。 顧客名は Customers
テーブルに含まれているので、顧客名を表示するにはルックアップ テーブルを作成する必要があります。 ルックアップ テーブルでは、Orders
レコードの CustomerID
値を使用してリレーションシップをナビゲートし、顧客名を返します。
ルックアップ テーブルを作成するには
関連データを含む次のいずれかの種類のデータ ソースをプロジェクトに追加します。
データセットまたは Entity Data Model。
WCF Data Service、WCF サービス、または Web サービス。 詳細については、「方法: サービスのデータに接続する」を参照してください。
オブジェクト。 詳細については、Visual Studio でのオブジェクトへのバインドに関する記事を参照してください。
注意
ルックアップ テーブルを作成するには、関連する 2 つのテーブルまたはオブジェクトがプロジェクトのデータ ソースとして存在している必要があります。
WPF デザイナーを開き、 [データ ソース] ウィンドウ内の項目の有効なドロップ ターゲットであるコンテナーがデザイナーに含まれていることを確認します。
有効なドロップ ターゲットの詳細については、「Visual Studio でデータに WPF コントロールをバインドする」を参照してください。
[データ] メニューの [データ ソースの表示] をクリックして [データ ソース] ウィンドウを開きます。
[データ ソース] ウィンドウで、親テーブルまたはオブジェクトと関連する子テーブルまたはオブジェクトが表示されるまでノードを展開します。
Note
関連する子テーブルまたはオブジェクトは、親テーブルまたはオブジェクトの下に展開可能な子ノードとして表示されるノードです。
子ノードのドロップダウン リスト メニューをクリックし、 [詳細] を選択します。
子ノードを展開します。
子ノードの下で、子と親のデータを関連付ける項目のドロップダウン リスト メニューをクリックします (前の例では、これは CustomerID ノードです)。参照バインディングをサポートする次のいずれかの種類のコントロールを選択します。
ComboBox
ListBox
ListView
注意
ListBox または ListView コントロールが一覧に表示されていない場合は、これらのコントロールを一覧に追加できます。 詳細については、「[データ ソース] ウィンドウからドラッグしたときに作成されるコントロールを設定する」を参照してください。
Selector から派生したカスタム コントロール。
注意
[データ ソース] ウィンドウの項目に対して選択できるコントロールの一覧にカスタム コントロールを追加する方法については、「[データ ソース] ウィンドウにカスタム コントロールを追加する」を参照してください。
[データ ソース] ウィンドウから WPF デザイナーのコンテナーに子ノードをドラッグします (前の例では、子ノードは Orders ノードです)。
Visual Studio により、ドラッグした項目ごとに新しいデータバインド コントロールを作成する XAML が生成されます。 この XAML では、子テーブルまたはオブジェクトの新しい CollectionViewSource もドロップ ターゲットのリソースに追加します。 一部のデータ ソースでは、Visual Studio によって、テーブルまたはオブジェクトにデータを読み込むコードも生成されます。 詳細については、「Visual Studio でデータに WPF コントロールをバインドする」を参照してください。
[データ ソース] ウィンドウから、前に作成した参照バインディング コントロールに親ノードをドラッグします (前の例では、親ノードは Customers ノードです)。
Visual Studio では、参照バインディングを構成するために、コントロールにいくつかのプロパティが設定されます。 次の表に、Visual Studio によって変更されるプロパティを示します。 必要に応じて、XAML または [プロパティ] ウィンドウでこれらのプロパティを変更できます。
プロパティ 設定の説明 ItemsSource このプロパティでは、コントロールに表示されるデータを取得するために使用されるコレクションまたはバインディングを指定します。 Visual Studio により、このプロパティは、コントロールにドラッグした親データの CollectionViewSource に設定されます。 DisplayMemberPath このプロパティでは、コントロールに表示されるデータ項目のパスを指定します。 Visual Studio により、このプロパティは、親データの主キーの後にある、文字列データ型を含む最初の列またはプロパティに設定されます。
親データの別の列またはプロパティを表示する場合は、このプロパティを別のプロパティのパスに変更します。SelectedValue Visual Studio により、このプロパティは、デザイナーにドラッグした子データの列またはプロパティにバインドされます。 これは親データへの外部キーです。 SelectedValuePath Visual Studio により、このプロパティは、親データへの外部キーである子データの列またはプロパティのパスに設定されます。