C# WPFのバインディング その2

前回の続き

 

バインディングについて知っておくべき仕組みの1つバインディングのモードについて。

ModelとViewの間でどのように値の受け渡しをするかというモードがある。 

Default

  TextBoxやCheckBoxなど双方向が必要そうなやつの場合はTwoWay

  TextBlockなど読み取りだけで済みそうなやつの場合はOneWay

 

OneTime

  最初の1回だけ値を取得する

 

OneWay

  データが更新されるとコントロールの値が更新される

  コントロールが値を変えてもデータは更新されない

 

OneWayToSource

  コントロールが値を更新するとデータが更新される

  データを更新してもコントロールは更新されない

 

TwoWay

  データが更新されるとコントロールの値が更新される

  コントロールが値を更新するとデータが更新される

 

 

 

既存のコントロールであれば、Defaultが適切なモードとなっているのであまり意識する必要が無い。

但し、自分でコントロールを作成する場合など、どのような動きをするコントロールなのかを考えて適切なモードをDefault値として設定する必要がある。

 

 

明示的にモードを指定する場合は以下のようになる。

        <TextBox Text="{Binding Path=SampleText,Mode=OneWay}"/>

{Binding SampleText}のように書くことが多いがこれは「Path=」を省略している書き方。

「○○○=」を指定する事で、Bindingクラスが持ついろいろなプロパティの値を変更する事が出来る。

 

複数のプロパティをセットする時は「○○○=」でプロパティ名を明示しつつカンマ区切りで列挙する。

 

ちなみに、上の例ではModeをOneWayにしているので、TextBoxに値を入力してもバインドしたデータは書き変わらなくなってしまう。

 

 

 

つづく