方法 : TextBox テキストでソースを更新するタイミングを制御する
更新 : 2007 年 11 月
ここでは、UpdateSourceTrigger プロパティを使用して、バインディング ソースの更新のタイミングを制御する方法について説明します。例として、ここでは TextBox コントロールを使用します。
使用例
TextBox.Text プロパティの LostFocus の既定値は UpdateSourceTrigger です。つまり、アプリケーションに、データ バインドされていた TextBox.Text プロパティを持つ TextBox がある場合、TextBox に入力するテキストによってソースが更新されるのは、TextBox にフォーカスがなくなったときです (たとえば、TextBox から離れた位置でクリックしたとき)。
入力すると同時にソースを更新するには、バインディングの UpdateSourceTrigger を PropertyChanged に設定します。次の例では、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 または OneWay のバインディングにのみ関連します。TwoWay バインディングと OneWay バインディングが動作するには、ソース オブジェクトがプロパティ変更通知を提供する必要があります。詳細については、このトピック内にあるサンプルを参照してください。また、「方法 : プロパティの変更通知を実装する」も参照してください。 |