DataContextとBinding-簡単なサンプル

簡単にDataContextとBindingの関係を理解する為に、全く役に立たないサンプルを交えて説明していきます。 :p

DataContext(データコンテキスト)は、FrameworkElement?FrameworkContentElement?に存在するオブジェクト型を格納するプロパティです。
これに対してBinding(バインディング)を行い、DataContextのデータ(プロパティ)とBindingするターゲット・プロパティを指定して、適切な値を利用します。
言葉での説明より、実際にコーディングしてみる方がいいので、コードを見ながら説明していきます。説明には、Customerというありふれたクラスを利用します。

サンプルで利用するCustomerクラス bookmark

説明するまでもないですが、FirstName?(姓)、LastName?(名)プロパティを持つ単純なクラスです。
このクラスをメインのデータとして利用していきます。

画面レイアウト bookmark

簡単なサンプルとして、単純にテキストボックスにBindingを行い、表示するプログラムを作成します。
画面レイアウトは以下のようにします。

画面レイアウト

上記画面レイアウトのXAMLは、以下のようになっています。

コード bookmark

では、txtFirstName?、txtLastName?にデータが表示されるように、DataContextの設定とBindingの設定をコードに記述します。
記述する場所は、ウインドウがロードされた時に発生するLoadedイベントに記述します。

11行目でDataContextにCustomerクラスを設定しています。ここでのMe.DataContextとは、Window.DataContextを指しています。
13、16行目で、TextプロパティにBindingし、データが表示されるようにします。
ここでは、コードよりBindingを行っていますが、直接XAMLのタグ内に記述する事もできます。

タグでのBinding bookmark

21、26行目のText="{Binding Path=xxxxxxx}"でBindingを行っています。
ここで疑問に思えるのが、Binding時に対象となるCustomerクラスのプロパティしか指定していない点です。これについては、DataContextを参照して下さい。

コメント bookmark

  • I do consider all the ideas you've presented on your post. They're really convincing and can certainly work. Still, the posts are very brief for novices. May just you please extend them a little from next 19:35:17 Thanks for the post. cedcdedkeafe -- Johnb255? 2016-08-31 (水) 19:35:17
  • I like this post, enjoyed this one regards for putting up. The goal of revival is conformity to the image of Christ, not imitation of animals. by Richard F. Lovelace. cdgadgdabcgf -- Johnd515? 2016-08-31 (水) 19:35:23
  • mometasone spray over counter ckaegddfffae -- Johnb803? 2017-01-10 (火) 21:34:23
  • Awesome article post.Thanks Again. Much obliged. dedegekcddfd -- Johnk191? 2017-01-10 (火) 21:34:26
  • This web site really has all the information and facts I wanted about this subject and didn't know who to ask. dgfgdgkekkgf -- Johnd761? 2017-01-10 (火) 21:34:31
  • Hey! Do you know if they make any plugins to help with Search Engine Optimization? I'm trying to get my blog to rank for some targeted keywords but I'm not seeing very good gains. If you know of any please share. Many thanks! edebfbcdcfce -- Johna79? 2017-01-10 (火) 21:34:35