Cómo: Controlar cuándo el texto de TextBox actualiza el origen
Actualización: noviembre 2007
En este tema se describe cómo utilizar la propiedad UpdateSourceTrigger para controlar el control de tiempo de las actualizaciones del origen de enlace. En el tema se utiliza el control TextBox como ejemplo.
Ejemplo
El valor predeterminado de UpdateSourceTrigger de la propiedad TextBox.Text es LostFocus. Esto significa que si una aplicación tiene un objeto TextBox con una propiedad TextBox.Text enlazada a datos, el siguiente texto que se escriba en TextBox no actualizará el origen de enlace hasta que TextBox pierda el foco (por ejemplo, cuando haga clic fuera de TextBox).
Si desea que el origen se actualice a medida que se escribe, debe establecer la propiedad UpdateSourceTrigger del enlace en PropertyChanged. En el ejemplo siguiente, las propiedades Text de TextBox y de TextBlock están enlazadas a la misma propiedad de origen. La propiedad UpdateSourceTrigger del enlace de TextBox está establecida en 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}"/>
Como resultado, TextBlock muestra el mismo texto (dado que el origen cambia) a medida que el usuario escribe texto en TextBox, como se muestra en la captura de pantalla siguiente del ejemplo:
Para obtener el ejemplo completo, vea Ejemplo Simple Binding.
Si tiene un cuadro de diálogo o un formulario modificable por el usuario y desea diferir las actualizaciones del origen hasta que el usuario haya terminado de modificar los campos y haga clic en "Aceptar", puede establecer el valor de UpdateSourceTrigger de los enlaces en Explicit, como en el ejemplo siguiente:
<TextBox Name="itemNameTextBox"
Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />
Cuando se establece el valor de UpdateSourceTrigger en Explicit, el valor del origen cambia únicamente cuando la aplicación llama al método UpdateSource. En el siguiente ejemplo se muestra cómo llamar a UpdateSource para 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();
Para obtener el ejemplo completo, vea Ejemplo Explicitly Updating the Binding Source.
Nota
Puede utilizar la misma técnica para las propiedades de otros controles, pero debe tener presente que el valor predeterminado de UpdateSourceTrigger de la mayoría de las demás propiedades es PropertyChanged. Para obtener más información, consulte la página de propiedades UpdateSourceTrigger.
Nota
La propiedad UpdateSourceTrigger se encarga de las actualizaciones del origen y, por consiguiente, únicamente es pertinente para los enlaces TwoWay o OneWay. Para que los enlaces TwoWay y OneWay funcionen, el objeto de origen debe proporcionar notificaciones de cambio de propiedad. Puede consultar los ejemplos citados en este tema para obtener más información. Además, puede consultar Cómo: Implementar la notificación de cambio de propiedad.