Silverlight のバインディング
Silverlight アプリケーション・プロジェクトを作成して、前述の「WPF のバインディング」のサンプルを乗せ換えて見ます。
XAMLは、ボディー(最初の Grid 以下)をコピーしました。
ビハインドコードは、コンストラクタ以外をコピーしました。
Class1.cs は、コピーして、namespace の名前を、ビハインドコードのnamespace の名前に変えました。
実行して見ると、TextBox => TextBlock のバインドは機能します。
変数との間のバインドは、双方向とも無視されます。エラーになったりはしませんが、TextBox との間でデータが交換されません。
以下の2点を修正すると同じように動きます。
1.Class1 は public
気が付いていませんでしたが、WPFのサンプルのバインドする変数を保持するClass1の宣言に public が付いていません。
public にすると、変数 => TextBox のバインディングは上手く行くようになりました。
逆の TextBox => 変数は行われていません。
動作としては、WPFのサンプルと同じように動くのですが、変数の set に記述してある Debug.WriteLine() が実行されていません。
2.TwoWay モード
XAMLのバインドの設定に、 mode=TwoWay を付加すると、set が呼び出されるようになりました。
- <TextBox Name="textBox1" Grid.Column="0" Text="{Binding bind_string, Mode=TwoWay}"/>
|