Visual Studio でのデータへの WPF コントロールのバインド

データを WPF コントロールにバインドすることで、アプリケーションのユーザーに対してデータを表示できます。 これらのデータ バインド コントロールを作成するには、[データ ソース] ウィンドウから Visual Studio の WPF デザイナーに項目をドラッグします。 このトピックでは、データ バインド WPF アプリケーションの作成に使用できる最も一般的なタスク、ツール、およびクラスについて説明します。

Visual Studio でデータ バインド コントロールを作成する方法に関する一般的な情報については、「Visual Studio でのデータへのコントロールのバインド」を参照してください。WPF のデータ バインドの詳細については、「データ バインディングの概要」を参照してください。

データへの WPF コントロールのバインドに関連するタスク

次の表に、[データ ソース] ウィンドウから WPF デザイナーに項目をドラッグすることで実行できるタスクを示します。

タスク

詳細情報

データ バインド コントロールを作成する。

既存のコントロールをデータにバインドする。

方法: Visual Studio でデータに WPF コントロールをバインドする

親子のリレーションシップを持つ関連データを表示するコントロールを作成する。あるコントロールの親データ レコードを選択すると、その選択レコードに関連する子データが別のコントロールに表示されるようにします。

方法: WPF アプリケーションで関連データを表示する

あるテーブルの外部キー フィールドの値に基づいて、別のテーブルの情報を表示するルックアップ テーブルを作成する。

方法: WPF アプリケーションでルックアップ テーブルを作成する

コントロールをデータベース内のイメージにバインドする。

方法: データベースの画像にコントロールをバインドする

有効なドロップ ターゲット

[データ ソース] ウィンドウ内の項目は、WPF デザイナーの有効なドロップ ターゲットにのみドラッグできます。 有効なドロップ ターゲットの種類は、主にコンテナーとコントロールの 2 つです。 コンテナーとは、通常はコントロールを含むユーザー インターフェイス要素です。 たとえば、グリッドやウィンドウはコンテナーです。

生成される XAML およびコード

[データ ソース] ウィンドウから WPF デザイナーに項目をドラッグすると、Visual Studio は、新しいデータ バインド コントロールを定義する (または、既存のコントロールをデータ ソースにバインドする) XAML を生成します。 一部のデータ ソースでは、Visual Studio により、データ ソースにデータを読み込むためのコードも分離コード ファイルに生成されます。

次の表に、Visual Studio で [データ ソース] ウィンドウの各データ ソースに対して生成される XAML とコードを示します。

データ ソース

コントロールをデータ ソースにバインドする XAML の生成

データ ソースにデータを読み込むコードの生成

データセット

エンティティ データ モデル

サービス

×

オブジェクト

×

データセット

[データ ソース] ウィンドウからデザイナーにテーブルまたは列をドラッグすると、Visual Studio は、次の処理を行う XAML を生成します。

  • 項目をドラッグした先のコンテナーのリソースに、データセットと新しい CollectionViewSource を追加する。 CollectionViewSource は、データセットのデータの移動と表示に使用できるオブジェクトです。

  • コントロールのデータ バインディングを作成する。 デザイナーの既存のコントロールに項目をドラッグすると、XAML により、その項目にコントロールがバインドされます。 コンテナーに項目をドラッグすると、XAML により、ドラッグした項目に対して選択されたコントロールが作成され、そのコントロールが項目にバインドされます。 コントロールは、新しい Grid 内に作成されます。

Visual Studio は、分離コード ファイルに次の変更も加えます。

  • コントロールを格納する UI 要素の Loaded イベント ハンドラーを作成する。 イベント ハンドラーは、テーブルにデータを読み込み、コンテナーのリソースから CollectionViewSource を取得して、最初のデータ項目を現在の項目にします。 Loaded イベント ハンドラーが既に存在する場合、Visual Studio はこのコードを既存のイベント ハンドラーに追加します。

Entity Data Model

[データ ソース] ウィンドウからデザイナーにエンティティまたはエンティティ プロパティをドラッグすると、Visual Studio は、次の処理を行う XAML を生成します。

  • 項目をドラッグした先のコンテナーのリソースに、新しい CollectionViewSource を追加する。 CollectionViewSource は、エンティティのデータの移動と表示に使用できるオブジェクトです。

  • コントロールのデータ バインディングを作成する。 デザイナーの既存のコントロールに項目をドラッグすると、XAML により、その項目にコントロールがバインドされます。 コンテナーに項目をドラッグすると、XAML により、ドラッグした項目に対して選択されたコントロールが作成され、そのコントロールが項目にバインドされます。 コントロールは、新しい Grid 内に作成されます。

Visual Studio は、分離コード ファイルに次の変更も加えます。

  • デザイナーにドラッグされたエンティティ (または、デザイナーにドラッグされたプロパティを含むエンティティ) のクエリを返す新しいメソッドを追加する。 新しいメソッドには GetEntityNameQuery という名前が付けられます。EntityName はエンティティの名前です。

  • コントロールを格納する UI 要素の Loaded イベント ハンドラーを作成する。 イベント ハンドラーは、GetEntityNameQuery メソッドを呼び出してエンティティにデータを読み込み、コンテナーのリソースから CollectionViewSource を取得して、最初のデータ項目を現在の項目にします。 Loaded イベント ハンドラーが既に存在する場合、Visual Studio はこのコードを既存のイベント ハンドラーに追加します。

サービス

[データ ソース] ウィンドウからデザイナーにサービス オブジェクトまたはプロパティをドラッグすると、Visual Studio は、データ バインド コントロールを作成する (または、既存のコントロールをオブジェクトやプロパティにバインドする) XAML を生成します。 ただし、Visual Studio はプロキシ サービス オブジェクトにデータを読み込むコードを生成しません。 このコードは、ユーザーが手動で記述する必要があります。 この方法を示す例については、「チュートリアル: WCF Data Service への WPF コントロールのバインド」を参照してください。

Visual Studio は、次の処理を行う XAML を生成します。

  • 項目をドラッグした先のコンテナーのリソースに、新しい CollectionViewSource を追加する。 CollectionViewSource は、サービスから返されるオブジェクトのデータの移動と表示に使用できるオブジェクトです。

  • コントロールのデータ バインディングを作成する。 デザイナーの既存のコントロールに項目をドラッグすると、XAML により、その項目にコントロールがバインドされます。 コンテナーに項目をドラッグすると、XAML により、ドラッグした項目に対して選択されたコントロールが作成され、そのコントロールが項目にバインドされます。 コントロールは、新しい Grid 内に作成されます。

オブジェクト

[データ ソース] ウィンドウからデザイナーにオブジェクトまたはプロパティをドラッグすると、Visual Studio は、データ バインド コントロールを作成する (または、既存のコントロールをオブジェクトやプロパティにバインドする) XAML を生成します。 ただし、Visual Studio はオブジェクトにデータを読み込むコードを生成しません。 このコードは、ユーザーが手動で記述する必要があります。

注意

カスタム クラスはパブリックで、既定のパラメーターなしのコンストラクターを備えている必要があります。 構文に "ドット" が含まれる入れ子になったクラスにすることはできません。 詳細については、「WPF における XAML とカスタム クラス」を参照してください。

Visual Studio は、次の処理を行う XAML を生成します。

  • 項目をドラッグした先のコンテナーのリソースに、新しい CollectionViewSource を追加する。 CollectionViewSource は、オブジェクトのデータの移動と表示に使用できるオブジェクトです。

  • コントロールのデータ バインディングを作成する。 デザイナーの既存のコントロールに項目をドラッグすると、XAML により、その項目にコントロールがバインドされます。 コンテナーに項目をドラッグすると、XAML により、ドラッグした項目に対して選択されたコントロールが作成され、そのコントロールが項目にバインドされます。 コントロールは、新しい Grid 内に作成されます。

参照

処理手順

方法: Visual Studio でデータに WPF コントロールをバインドする

方法: WPF アプリケーションでルックアップ テーブルを作成する

方法: WPF アプリケーションで関連データを表示する

チュートリアル: Entity Data Model への WPF コントロールのバインド

チュートリアル: データセットへの WPF コントロールのバインド

チュートリアル: WCF Data Service への WPF コントロールのバインド

チュートリアル: WPF アプリケーションでの関連データの表示

参照

[データ ソース] ウィンドウ

概念

データ ソースの概要