2013年01月18日

[C# WPF]Bindingソースの更新タイミングを変える -UpdateSourceTrigger-

前回のサンプルでBindingソースの更新を 表示に反映するサンプルを見ました。
その際、Bindingソースが更新されるタイミングは
TextBoxからフォーカスが外れたタイミングでした。
Bindingソースを更新するタイミングを変えたい場面もあると思います。

Bindingソースの更新タイミングはBindingプロパティの
UpdateSourceTriggerで指定します。

サンプルを見てみましょう。
前回のサンプルのxamlを以下のように変更してください。

<Grid>
    <Label Height="23" Width="70" Margin="5"
           HorizontalAlignment="Left" VerticalAlignment="Top"
           Content="{Binding Message}" />
    <TextBox Height="23" Width="70" Margin="5,35,0,0"
             HorizontalAlignment="Left" VerticalAlignment="Top"
             Text="{Binding Message, UpdateSourceTrigger=PropertyChanged}" />
</Grid>

前回TextBoxからフォーカスを外す為にButtonを配置していましたが
今回は削除してLabelとTextBoxだけ配置しています。
そしてTextBoxのTextプロパティのBindingプロパティUpdateSourceTriggerに
PropertyChangedを指定しています。
これはプロパティ(TextBoxのText)値が更新されたらすぐに
Bindingソースに反映するという指定です。

では実行してみましょう。
1.jpg
TextBoxで文字列を編集すると即座にLabelの内容も更新されます。
TextBoxのTextプロパティが更新される度にBindingソースが更新されているという事です。

このBiningのUpdateSourceTriggerプロパティの
デフォルト値はコントロールによって違います。

UpdateSourceTriggerには以下のような設定があります。
Default 対象のコントロールのデフォルトの値です
Explicit ソースコード上からUpdateSourceメソッドを 呼び出したタイミングでBindingソースを更新します
LostFocus コントロールからフォーカスが離れたタイミングで Bindingソースを更新します
PropertyChanged Bindしたコントロールのプロパティ値が 更新されたタイミングでBindingソースも更新します


posted by cw at 14:30| Comment(0) | Binding | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。