Visual Studio でのデータへの WPF コントロールのバインド
データを WPF コントロールにバインドすることで、アプリケーションのユーザーに対してデータを表示できます。これらのデータ バインド コントロールを作成するには、[データ ソース] ウィンドウから Visual Studio の WPF デザイナーに項目をドラッグします。このトピックでは、データ バインド WPF アプリケーションの作成に使用できる最も一般的なタスク、ツール、およびクラスについて説明します。
Visual Studio でデータ バインド コントロールを作成する方法に関する一般的な情報については、「Visual Studio でのデータへのコントロールのバインド」を参照してください。WPF のデータ バインドの詳細については、「データ バインディングの概要」を参照してください。
データへの WPF コントロールのバインドに関連するタスク
次の表に、[データ ソース] ウィンドウから WPF デザイナーに項目をドラッグすることで実行できるタスクを示します。
タスク |
詳細情報 |
---|---|
データ バインド コントロールを作成する。 既存のコントロールをデータにバインドする。 |
|
親子のリレーションシップを持つ関連データを表示するコントロールを作成する。あるコントロールの親データ レコードを選択すると、その選択レコードに関連する子データが別のコントロールに表示されるようにします。 |
|
あるテーブルの外部キー フィールドの値に基づいて、別のテーブルの情報を表示するルックアップ テーブルを作成する。 |
|
コントロールをデータベース内のイメージにバインドする。 |
有効なドロップ ターゲット
[データ ソース] ウィンドウ内の項目は、WPF デザイナーの有効なドロップ ターゲットにのみドラッグできます。有効なドロップ ターゲットの種類は、主にコンテナーとコントロールの 2 つです。コンテナーとは、通常はコントロールを含むユーザー インターフェイス要素です。たとえば、グリッドやウィンドウはコンテナーです。
生成される XAML およびコード
[データ ソース] ウィンドウから WPF デザイナーに項目をドラッグすると、Visual Studio は、新しいデータ バインド コントロールを定義する (または、既存のコントロールをデータ ソースにバインドする) XAML を生成します。一部のデータ ソースでは、Visual Studio により、データ ソースにデータを読み込むためのコードも分離コード ファイルに生成されます。
次の表に、Visual Studio で [データ ソース] ウィンドウの各データ ソースに対して生成される XAML とコードを示します。
データ ソース |
コントロールをデータ ソースにバインドする XAML の生成 |
データ ソースにデータを読み込むコードの生成 |
---|---|---|
データセット |
○ |
○ |
エンティティ データ モデル |
○ |
○ |
サービス |
○ |
X |
Object |
○ |
X |
データセット
[データ ソース] ウィンドウからデザイナーにテーブルまたは列をドラッグすると、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 アプリケーションでルックアップ テーブルを作成する
チュートリアル: Entity Data Model への WPF コントロールのバインド
チュートリアル: データセットへの WPF コントロールのバインド
チュートリアル: WCF Data Service への WPF コントロールのバインド
チュートリアル: WPF アプリケーションでの関連データの表示