方法 : TextBox テキストでソースを更新するタイミングを制御する

ここでは、UpdateSourceTrigger プロパティを使用して、バインディング ソースの更新のタイミングを制御する方法について説明します。 例として、ここでは TextBox コントロールを使用します。

使用例

TextBox.Text プロパティの UpdateSourceTrigger の既定値は LostFocus です。 つまり、アプリケーションに、データ バインドされていた TextBox.Text プロパティを持つ TextBox がある場合、TextBox に入力するテキストによってソースが更新されるのは、TextBox にフォーカスがなくなったときです (たとえば、TextBox から離れた位置でクリックしたとき)。

入力すると同時にソースを更新するには、バインディングの UpdateSourceTriggerPropertyChanged に設定します。 次の例では、TextBox および TextBlock の両方の Text プロパティが同じソース プロパティにバインドされています。 TextBox バインディングの UpdateSourceTrigger プロパティは、PropertyChanged に設定されています。

<Label>Enter a Name:</Label>
<TextBox>
  <TextBox.Text>
    <Binding Source="{StaticResource myDataSource}" Path="Name"
             UpdateSourceTrigger="PropertyChanged"/>
  </TextBox.Text>
</TextBox>

<Label>The name you entered:</Label>
<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=Name}"/>

結果として、次のスクリーンショットの例に示すように、TextBlock は、ユーザーが TextBox に入力したのと同じテキストを表示します (ソースが変更されるため)。

単純なデータ バインディングのサンプルのスクリーンショット

ダイアログまたはユーザーが編集できるフォームがあり、ユーザーがフィールドの編集を終えて [OK] をクリックするまでソースの更新を遅延させる場合は、次の例のように、バインディングの UpdateSourceTrigger 値を Explicit に設定します。

<TextBox Name="itemNameTextBox"
         Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />

UpdateSourceTrigger 値を Explicit に設定すると、アプリケーションが UpdateSource メソッドを呼び出す場合にのみソース値が変化します。 itemNameTextBox の UpdateSource を呼び出す方法を次の例に示します。

Me.itemNameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
Me.bidPriceTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
// itemNameTextBox is an instance of a TextBox
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
メモメモ

同じ方法を他のコントロールのプロパティにも使用できますが、大多数の他のプロパティには UpdateSourceTrigger の既定値の PropertyChanged が設定されているので注意が必要です。詳細については、UpdateSourceTrigger プロパティのページを参照してください。

メモメモ

UpdateSourceTrigger プロパティはソースの更新を扱うため、TwoWay または OneWayToSource のバインディングにのみ関連します。TwoWay バインディングと OneWayToSource バインディングが動作するには、ソース オブジェクトがプロパティ変更通知を提供する必要があります。詳細については、このトピック内にあるサンプルを参照してください。また、「方法 : プロパティの変更通知を実装する」も参照してください。

参照

その他の技術情報

データ バインディングに関する「方法」トピック