注
DataSet クラスと関連クラスは、アプリケーションがデータベースから切断されている間にアプリケーションがメモリ内のデータを操作できるようにする、2000 年代初頭のレガシ .NET Framework テクノロジです。 このテクノロジは、ユーザーがデータを変更し、変更をデータベースに保持できるアプリに特に役立ちます。 データセットは実証済みの成功したテクノロジですが、新しい .NET アプリケーションには Entity Framework Core を使用することをお勧めします。 Entity Framework は、オブジェクト モデルとして表形式データを操作するより自然な方法を提供し、よりシンプルなプログラミング インターフェイスを備えています。
ルックアップ テーブル (ルックアップ バインドとも呼ばれます) という用語は、別のテーブルの外部キー フィールドの値に基づいて、1 つのデータ テーブルからの情報を表示するコントロールを表します。 参照テーブルを作成するには、[ データ ソース ] ウィンドウの親テーブルまたはオブジェクトのメイン ノードを、関連する子テーブルの列またはプロパティに既にバインドされているコントロールにドラッグします。
たとえば、販売データベース内の Orders
のテーブルを考えてみます。 Orders
テーブルの各レコードには、注文した顧客を示すCustomerID
が含まれています。 CustomerID
は、Customers
テーブル内の顧客レコードを指す外部キーです。 Orders
テーブルから注文の一覧を表示する場合は、CustomerID
ではなく、実際の顧客名を表示できます。 顧客名は Customers
テーブルにあるため、顧客名を表示する参照テーブルを作成する必要があります。 参照テーブルでは、Orders
レコードのCustomerID
値を使用してリレーションシップを移動し、顧客名を返します。
参照テーブルを作成するには
関連するデータを含む次のいずれかの種類のデータ ソースをプロジェクトに追加します。
データセットまたはエンティティ データ モデル。
WCF Data Service、WCF サービス、または Web サービス。 詳細については、「 方法: サービス内のデータに接続する」を参照してください。
オブジェクト。 詳細については、「 Visual Studio でのオブジェクトへのバインド」を参照してください。
注
ルックアップ テーブルを作成する前に、2 つの関連するテーブルまたはオブジェクトがプロジェクトのデータ ソースとして存在している必要があります。
WPF デザイナーを開き、[データ ソース] ウィンドウの項目の有効なドロップ ターゲットであるコンテナーがデザイナーに含まれていることを確認します。
有効なドロップ ターゲットの詳細については、「 Visual Studio で WPF コントロールをデータにバインドする」を参照してください。
[ データ ] メニューの [ データ ソースの表示 ] をクリックして、[ データ ソース ] ウィンドウを開きます。
親テーブルまたはオブジェクトと関連する子テーブルまたはオブジェクトが表示されるまで、[ データ ソース] ウィンドウでノードを展開します。
注
関連する子テーブルまたはオブジェクトは、親テーブルまたはオブジェクトの下に展開可能な子ノードとして表示されるノードです。
子ノードのドロップダウン リスト メニューをクリックし、[詳細] を選択 します。
子ノードを展開します。
子ノードの下で、子データと親データを関連付けた項目のドロップダウン リスト メニューをクリックします。 (前の例では、これは 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 では、このプロパティを、親データの外部キーである子データの列またはプロパティのパスに設定します。