‫お帰りなさい｡
‫依存性プロパティがどのようなものか分かったところで､ 互いにリンクしていたり､ つながっていたりするので､ そろそろデータバインディングについて確認する必要があります｡
‫そこで､ このビデオでは､ 4種類のバインドモードについて説明します｡
‫データバインディングのモードですが､ ワンウェイと呼ばれるものがありますね｡
‫つまり､ バインディングソースからバインディングターゲットに向かうわけです｡
‫それから､ バインディングターゲットからバインディングソースに向かって､ 逆にバインディングする､ これが2ウェイモードです｡
‫そして､ ターゲットからソースに向けて情報を送信するone way to sourceがあります｡
‫そして最後に､ バインディング・ターゲットを1回だけ用意します｡ これは､ コンストラクタ内または初期化時に行われるバインディング・ソースです｡
‫では､ そのための例を確認してみましょう｡
‫ここにテキストボックスを用意して､ テキストを入力することができます｡
‫そこで､ 幅を100とし､ 余白を50ピクセルとすることにします｡
‫今度はグリッドではなく､ スタックパネルを使いたい｡
‫そこで､ その中で今､ スタックパネルという名前に変更します｡
‫テキストボックスです｡
‫というテキストを割り当てる｡
‫というかまあ､ 15みたいなことを言い出すわけです｡
‫そしてその下にはスライダーを作ります｡
‫ですから､ スライダーの最小値は0､ 最大値は100であるべきです｡
‫では､ このコードをそのまま実行して､ 何を作成したかを見てみましょう｡
‫そしてご覧の通り､ 15という値があります｡
‫テキストボックスなので､ 好きなようにテキストを変更できるんです｡
‫そして､ そこにスライダーが｡
‫そして今､ 私がやりたいことは､ この2つをつなげることです｡
‫そこで､ スライダーとテキストボックスをつなげたいと思います｡
‫そして､ ご覧いただいたように､ 4種類の接続方法があります｡
‫そして､ 最初に使うのはワンウェイデータバインディングです｡
‫そこで､ ここではテキストボックスのテキストをバインドするようにします｡
‫そこで､ ここではバインディングを使うことにして､ 誰とバインドすればいいのか知りたい｡
‫そこで､ スライダーにバインドしてみたいと思います｡
‫スライダーと通信したり､ スライダーにアクセスするためには､ スライダーに名前が必要なのです｡
‫そこで､ 私のスライダーという名前を付けて､ ここにその名前を追加することができます｡
‫そこで､ バインドしたい要素名をmy sliderとします｡
‫そして実はこれ､ ハイフンにはないんです｡
‫さて､ 次に必要なのはパスです｡
‫では､ このスライダーで手に入れたいものは何なのか｡
‫しかも､ 複数の物件になる可能性もありますよね？
‫でも､ 私が気になるのは､ スライダーの価値を知りたいので､ 価値です｡
‫だから､ パスイコールバリューと言っているんです｡
‫そして､ 最後にモードを割り当てる必要がありますが､ まずはワンウェイモードを設定します｡
‫そして､ それをテストする前に､ 当然ながら､ そこにあった古いテキストを取り除く必要があります｡
‫そして､ このコードを実行することができるようになりました｡
‫そして､ スライダーをドラッグすると､ その様子を見ることができます｡
‫ここでの値も変化します｡
‫さて､ ご覧の通り､ ここには非常に多くの浮動小数点値､ あるいは長い浮動小数点値があります｡
‫そして､ 全体の数字を把握したい｡
‫そこで私ができることは､ スナップスナップというものを使って撮影を可能にすることです｡
‫だから､ ここでその1つを有効に取るためにスナップであり､ 私はそれが真実であると言うつもりです｡
‫だから､ 有効にしてほしいのです｡
‫もう一度実行すると､ ここでは整数値しか得られないことがわかります｡
‫なるほど､ それは素晴らしい｡
‫しかし､ 今は
‫ちなみに､ スライダーとつながっていないこともおわかりいただけると思います｡
‫つまり､ テキストは接続され､ データソースはスライダーで､ ターゲットはテキストボックスです｡
‫つまり､ ご覧の通り､ テキストボックスにデータが送られるのです｡
‫しかし､ モードを一方通行に設定しているので､ ここにあるテキストやテキストボックスの値を変更しても､ スライダーはそれに興味を示さないので､
‫何も変わりません｡
‫そこで､ 例えば25を入力してみましょう､ Sliderは気にしません｡
‫だから､ それを2ウェイに変えれば､ 気にならなくなる｡
‫ところで､ 今､ あなただけに､ こちらの1枚を｡
‫つまり､ テキストボックスがターゲットで､ スライダーがバインディングソースです｡
‫スライダーはバインディングソースなんですね｡
‫そして今､ この一番上にあるものが､ より意味を持つようになりましたね？
‫そこで､ 今度は2ウェイモードを使いますが､ その意味は2回目でおわかりいただけると思います｡
‫そこで､ 私たちは
‫ここに値を入力して､ その値が考慮されるようにタブを押すと､ スライダーの値が変わるのがわかります｡
‫だから､ 今は両方つながっているんです｡
‫もし､ 片道だけでなく､ ソースのほうに行きたい場合はどうすればいいのでしょうか？
‫つまり､ テキストだけがスライダーに影響を与え､ スライダーはテキストボックスに影響を与えないようにする必要があります｡
‫それならこのone way to sourceモードが使えるので､ one way to sourceを使うことにします｡
‫では､ もう一度実行してみましょう｡
‫そして､ ここで値を変えても､ ご覧のように何も変わりません｡
‫しかし､ ここに値を入れると､ スライダーが変化しています｡
‫いいかい？
‫だから､ それが一つのソースになるんです｡
‫そして､ いよいよワンタイムモードです｡
‫メインウィンドウのXAMLに入りましょう｡
‫先ほど言ったように､ 初期化時やコンストラクタで行う必要があるため､ コードを書く必要があります｡
‫この場合､ メインウィンドウのコンストラクタで､ 1回だけバインドするために使用します｡
‫スライダーにアクセスし､ 値を30に設定します｡
‫今度は､ テキストボックスにアクセスしたいと思います｡
‫見ての通り､ このスライダーには名前がついていて､ 同じクラスに属しているので､ すぐにアクセスすることができます｡
‫しかし､ 今はまだテキストボックスに名前がついていないので､ 私のテキストボックスという名前をつけてあげます｡
‫そして､ このテキストボックスにアクセスすることができるようになりました｡
‫私のテキストボックス､ ドットテキストは､ 私のスライダーのドット値ドット文字列にする必要があります｡
‫つまり､ 開始時のスライダーの値は30で､ テキストボックスのテキストはスライダーの値を文字列で表したものになります｡
‫どちらが30になるかというと､ 同じく30になる｡
‫ただ､ うまく修正できたわけではなく､ スライダーの値を固定し､ ここにあるテキストも一度設定します｡
‫それがここでのワンタイムモードなんですね｡
‫ご覧のように､ 今スライダーを変更しても､ 私たちのテキストは変化しません｡
‫値を追加した場合､ 値を25に変更しても､ どちらも何も変わりません｡
‫では､ もう1つ､ あなたにとっても興味深いものを見てみましょう｡
‫そこで今度は､ 2通りの方法で変更できるようにしたいのですが､ さらに､ 私がタブを押さなくても変更できるようにしたいのです｡
‫そして､ それは次のような方法をとれば､ 発動するものです｡
‫アクセスできるプロパティが複数あることがわかるので､ ここでデータバインディングに何かを追加します｡
‫そして､ 今使いたいのは､ 更新元トリガーです｡
‫こちらのアップデートソーストリガーです｡
‫そして､ ここにあるように､ デフォルトでは､ 明確なフォーカスを失っています｡
‫私たちにとって興味深いのは､ このプロパティが変更されたことです｡
‫そこで､ プロパティが変更されるたびに､ これをトリガーさせたい｡
‫つまり､ スライダーやテキストが変更されるたびに､ です｡
‫では､ もう一度実行してみましょう｡
‫さて､ 今回も2ウェイを使用していますが､ 最初に30または30に設定したことを思い出してください｡
‫だから､ 悩まないんです｡
‫もちろん､ 2ウェイモードでも使用できます｡
‫しかし､ 例えば25に変更したり､ タイピング中に5､ 5と入力したりすると､
‫5も考慮され､ 何かを変えていることになります｡
‫100より大きい値､ 例えば555を足そうとすると､ 最大値である100まで行くことがわかりますね｡
‫だから､ もし私が弄れば､ 直接的に変化しているのがわかると思います｡
‫これは､ 更新元がプロパティの変更をトリガーするという追加情報がここにあるからです｡
‫だから､ 私たちの財産はいつでも｡
‫しかし､ テキストボックスは､ テキストプロパティが変更されたときに､ この更新ソーストリガーが実行される必要があります｡
‫そして､ このテキスト全体がテキストボックスのスライダーを変化させ､ それらはすべて変化している､ わかった｡
‫だって､ 縛られてるんでしょう？
‫2つの方法で結ばれているのです｡
‫これがデータバインディングの一つの大きな例ですね｡
‫データバインディングについて知っておくべきことは､ まだまだたくさんあります｡
‫今回は値をバインドしただけですが､ 他にもいろいろな面をバインドすることができます｡
‫例えば､ ここではパスが値になっていますが､ プロパティのパスであることがわかりますが､ 他にもたくさんあるわけです｡
‫では､ 背景を縛るとしましょう｡
‫そこで､ 私のスライダーの背景が変わり､ 005などと表示されたとします｡
‫それがスライダーの背景となり､ 素晴らしい出来栄えとなりました｡
‫スライダーの背景を水色にすると､ テキストの値がf01, f fとなり､
‫これが色の16進数値です｡
‫アクア
‫白に変えれば､ FSは十分なはずだ｡
‫黒に変えれば､ ゼロがたくさんあるはずなんです｡
‫ご覧の通りです｡
‫F.
‫まあ､ これがα値なんですけどね｡
‫そして､ 16進数の値､ ゼロ､ ゼロゼロという具合に｡
‫データマイニングでできるのは､ 価値だけではないんですね｡
‫お互いに共有しているかなりのプロパティを束ねることができます｡
‫わかりました｡
‫そこで､ ここで値を戻して､ プロジェクトを保存することにします｡
‫ということで､ 今回の動画は楽しんでいただけたでしょうか？
‫次のビデオでは､ WPFを使って､ もっと面白いことをやってみましょう｡