Comment : contrôler quand le texte TextBox met à jour la source

Mise à jour : novembre 2007

Cette rubrique décrit comment utiliser la propriété UpdateSourceTrigger pour contrôler le minutage des mises à jour de lasource de liaison. Le rubrique utilise le contrôle TextBox comme exemple.

Exemple

La propriété TextBox.Text a une valeur par défaut UpdateSourceTrigger de LostFocus. Cela signifie que si un application a une TextBox avec une propriété TextBox.Text liée aux données, le texte que vous saisissez dans la TextBox ne met pas à jour la source jusqu'à ce que la TextBox perde le focus (par exemple, lorsque vous cliquez en dehors de la TextBox).

Si vous souhaitez que la source soit mise à jour pendant votre saisie, définissez le UpdateSourceTrigger de la liaison PropertyChanged. Dans l'exemple suivant, les propriétés Text de la TextBox et du TextBlock sont liées à la même propriété source. La propriété UpdateSourceTrigger de la liaison TextBox a la valeur 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}"/>

Par conséquent, le TextBlock affiche le même mot (car la source change) lorsque l'utilisateur entre le texte dans la TextBox, comme illustré dans la capture d'écran suivante de l'exemple :

Capture d'écran : exemple de liaison de données simple

Pour l'exemple complet, consultez Liaison simple, exemple.

Si vous avez un formulaire de boîte de dialogue ou pouvant être modifié par l'utilisateur et que vous souhaitez exécuter les mises à jour de la source jusqu'à ce que l'utilisateur ait fini de modifier les champs et ait cliqué sur « OK », vous pouvez définir la valeur UpdateSourceTrigger de vos liaisons sur Explicit, comme indiqué dans l'exemple suivant :

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

Lorsque vous définissez la valeur UpdateSourceTrigger sur Explicit, la valeur source change uniquement lorsque l'application appelle la méthode UpdateSource. L'exemple suivant montre comment appeler UpdateSource pour itemNameTextBox :

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();

Pour l'exemple complet, consultez Mise à jour explicite de la source de liaison, exemple.

Remarque :

Vous pouvez utiliser la même technique pour les propriétés d'autres contrôles, mais gardez à l'esprit que la plupart des autres propriétés ont une valeur UpdateSourceTrigger par défaut de PropertyChanged. Pour plus d'informations, consultez la page de propriétés UpdateSourceTrigger.

Remarque :

La propriété UpdateSourceTrigger traite les mises à jour de la source et ne concerne donc que les liaisons TwoWay ou OneWay. Pour les liaisons TwoWay et OneWay, l'objet source doit fournir des notifications de modification de la propriété. Pour plus d'informations, consultez les exemples figurant dans cette rubrique. Vous pouvez aussi consulter Comment : implémenter la notification des modifications de propriétés.

Voir aussi

Autres ressources

Exemples de liaisons de données

Rubriques Comment relatives aux liaisons de données