次の方法で共有


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

更新 : 2007 年 11 月

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

使用例

TextBox.Text プロパティの LostFocus の既定値は UpdateSourceTrigger です。つまり、アプリケーションに、データ バインドされていた 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();

サンプル全体については、「バインディング ソースの明示的な更新のサンプル」を参照してください。

ms754356.alert_note(ja-jp,VS.90).gifメモ :

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

ms754356.alert_note(ja-jp,VS.90).gifメモ :

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

参照

その他の技術情報

データ バインディングのサンプル

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