Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tópico descreve como usar a propriedade UpdateSourceTrigger para controlar o momento das atualizações da fonte da ligação. O tópico usa o TextBox controle como exemplo.
Exemplo
A TextBox.Text propriedade tem um valor padrão UpdateSourceTrigger de LostFocus. Isso significa que, se uma aplicação tiver uma TextBox com uma propriedade TextBox.Text vinculada a dados, o texto que digitar no TextBox não atualizará a fonte até que o TextBox perca o foco (por exemplo, quando clicar fora do TextBox).
Se desejar que a fonte seja atualizada à medida que você digita, defina o UpdateSourceTrigger da associação como PropertyChanged. No exemplo a seguir, as linhas de código realçadas mostram que as Text propriedades do TextBox e do TextBlock estão vinculadas à mesma propriedade source. A UpdateSourceTrigger propriedade da TextBox associação é definida como 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, o TextBlock mostra o mesmo texto (porque a fonte muda) como o usuário insere texto no TextBox, como ilustrado pela seguinte captura de tela do exemplo:
Se você tiver uma caixa de diálogo ou um formulário editável pelo usuário e quiser adiar as atualizações de origem até que o usuário termine de editar os campos e clique em "OK", você pode definir o UpdateSourceTrigger valor de suas ligações como Explicit, como no exemplo a seguir:
<TextBox Name="itemNameTextBox"
Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />
Quando você define o UpdateSourceTrigger valor como Explicit, o valor de origem só muda quando o aplicativo chama o UpdateSource método. O exemplo a seguir mostra como chamar 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()
Observação
Você pode usar a mesma técnica para propriedades de outros controles, mas lembre-se de que a maioria das outras propriedades tem um valor padrão UpdateSourceTrigger de PropertyChanged. Para obter mais informações, consulte a UpdateSourceTrigger página de propriedade.
Observação
A UpdateSourceTrigger propriedade lida com atualizações de origem e, portanto, só é relevante para TwoWay ou OneWayToSource vinculações. Para que as associações TwoWay e OneWayToSource funcionem, o objeto de origem precisa fornecer notificações de alteração de propriedade. Você pode consultar os exemplos citados neste tópico para obter mais informações. Pode-se, além disso, consultar Implementar notificação de alteração de propriedade.
Ver também
.NET Desktop feedback