Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describe cómo usar la UpdateSourceTrigger propiedad para controlar el tiempo de las actualizaciones de origen de enlace. El tema usa el TextBox control como ejemplo.
Ejemplo
La TextBox.Text propiedad tiene un valor predeterminado UpdateSourceTrigger de LostFocus. Esto significa que si una aplicación tiene un TextBox con una propiedad de datos enlazada TextBox.Text, el texto que escribe en TextBox no actualiza el origen hasta que el TextBox pierde el foco (por ejemplo, al hacer clic fuera del TextBox).
Si desea que el origen se actualice a medida que escriba, establezca el UpdateSourceTrigger valor del enlace en PropertyChanged. En el ejemplo siguiente, las líneas de código resaltadas muestran que las Text
propiedades de TextBox y TextBlock están enlazadas a la misma propiedad de origen. La UpdateSourceTrigger propiedad del TextBox enlace se establece en PropertyChanged.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:src="clr-namespace:SDKSample"
xmlns:system="clr-namespace:System;assembly=mscorlib"
SizeToContent="WidthAndHeight"
Title="Simple Data Binding Sample">
<Window.Resources>
<ObjectDataProvider x:Key="myDataSource" ObjectType="{x:Type src:Person}">
<ObjectDataProvider.ConstructorParameters>
<system:String>Joe</system:String>
</ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>
<Style TargetType="{x:Type Label}">
<Setter Property="DockPanel.Dock" Value="Top"/>
<Setter Property="FontSize" Value="12"/>
</Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Width" Value="100"/>
<Setter Property="Height" Value="25"/>
<Setter Property="DockPanel.Dock" Value="Top"/>
</Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Width" Value="100"/>
<Setter Property="Height" Value="25"/>
<Setter Property="DockPanel.Dock" Value="Top"/>
</Style>
</Window.Resources>
<Border Margin="25" BorderBrush="Aqua" BorderThickness="3" Padding="8">
<DockPanel Width="200" Height="100">
<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}"/>
</DockPanel>
</Border>
</Window>
Como resultado, TextBlock muestra el mismo texto (porque cambia la fuente) que el usuario escriba en TextBox, como se muestra en la captura de pantalla siguiente del ejemplo.
Si tiene un cuadro de diálogo o un formulario editable por el usuario y desea aplazar las actualizaciones de origen hasta que el usuario haya terminado de editar los campos y haga clic en "Aceptar", puede establecer el valor de sus vinculaciones en UpdateSourceTrigger, como en el siguiente ejemplo:
<TextBox Name="itemNameTextBox"
Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />
Cuando estableces el valor UpdateSourceTrigger en Explicit, el valor de origen solo cambia cuando la aplicación llama al método UpdateSource. En el ejemplo siguiente se muestra cómo llamar UpdateSource para itemNameTextBox
:
// itemNameTextBox is an instance of a TextBox
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
Me.itemNameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
Me.bidPriceTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
Nota:
Puede usar la misma técnica para las propiedades de otros controles, pero tenga en cuenta que la mayoría de las otras propiedades tienen un valor predeterminado UpdateSourceTrigger de PropertyChanged. Para obtener más información, consulte la página de propiedades UpdateSourceTrigger.
Nota:
La propiedad UpdateSourceTrigger se ocupa de las actualizaciones de origen y, por tanto, solo es relevante para los enlaces TwoWay o OneWayToSource. Para que TwoWay y OneWayToSource 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 Implementar notificación de cambio de propiedad.
Consulte también
.NET Desktop feedback