次の方法で共有


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

 

公開日: 2016年4月

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

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

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

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

タスク 詳細情報
データ バインド コントロールを作成する。

既存のコントロールをデータにバインドする。
方法: Visual Studio でデータに WPF コントロールをバインドする
親子のリレーションシップを持つ関連データを表示するコントロールを作成する。あるコントロールの親データ レコードを選択すると、その選択レコードに関連する子データが別のコントロールに表示されるようにします。 方法: WPF アプリケーションで関連データを表示する
あるテーブルの外部キー フィールドの値に基づいて、別のテーブルの情報を表示するルックアップ テーブルを作成する。 方法: WPF アプリケーションでルックアップ テーブルを作成する
コントロールをデータベース内のイメージにバインドする。 方法: データベースの画像にコントロールをバインドする

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

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

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

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

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

データ ソース コントロールをデータ ソースにバインドする XAML の生成 データ ソースにデータを読み込むコードの生成
データセット はい はい
エンティティ データ モデル はい はい
サービス はい いいえ
オブジェクト はい いいえ

データセット

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

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

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

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

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

Entity Data Model

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

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

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

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

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

  • コントロールを格納する Loaded 要素の UI イベント ハンドラーを作成する。 イベント ハンドラーは、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 アプリケーションで関連データを表示する
エンティティ データ モデルへの WPF コントロールのバインドに関するページ
チュートリアル: データセットへの WPF コントロールのバインド
チュートリアル: WCF Data Service への WPF コントロールのバインド
チュートリアル: WPF アプリケーションでの関連データの表示
ウィンドウ
データ ソースの概要