Procedure: Bepalen wanneer het tekstvak de bron bijwerkt
In dit onderwerp wordt beschreven hoe u de eigenschap UpdateSourceTrigger gebruikt om de timing van bindingsbronupdates te beheren. In het onderwerp wordt het besturingselement TextBox als voorbeeld gebruikt.
Voorbeeld
De eigenschap TextBox.Text heeft een standaardwaarde UpdateSourceTrigger van LostFocus. Dit betekent dat als een toepassing een TextBox heeft met een gegevensgebonden TextBox.Text eigenschap, de tekst die u typt in de TextBox de bron pas bijwerkt als de TextBox de focus verliest (bijvoorbeeld wanneer u op de TextBoxklikt).
Als u wilt dat de bron wordt bijgewerkt terwijl u typt, stelt u de UpdateSourceTrigger van de binding in op PropertyChanged. In het volgende voorbeeld tonen de gemarkeerde coderegels aan dat de Text
eigenschappen van zowel de TextBox als de TextBlock afhankelijk zijn van dezelfde broneigenschap. De eigenschap UpdateSourceTrigger van de TextBox-binding is ingesteld op 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>
Als gevolg hiervan geeft de TextBlock dezelfde tekst weer (omdat de bron verandert) als de gebruiker tekst invoert in de TextBox, zoals wordt geïllustreerd door de volgende schermopname van het voorbeeld:
Als u een dialoogvenster of een door de gebruiker bewerkbaar formulier hebt en u bronupdates wilt uitstellen totdat de gebruiker klaar is met het bewerken van de velden en op OK klikt, kunt u de UpdateSourceTrigger waarde van uw bindingen instellen op Explicit, zoals in het volgende voorbeeld:
<TextBox Name="itemNameTextBox"
Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />
Wanneer u de UpdateSourceTrigger waarde instelt op Explicit, wordt de bronwaarde alleen gewijzigd wanneer de toepassing de UpdateSource methode aanroept. In het volgende voorbeeld ziet u hoe u UpdateSource aanroept voor 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()
Notitie
U kunt dezelfde techniek gebruiken voor eigenschappen van andere besturingselementen, maar houd er rekening mee dat de meeste andere eigenschappen een standaardwaarde hebben UpdateSourceTrigger van PropertyChanged. Zie de eigenschappenpagina UpdateSourceTrigger voor meer informatie.
Notitie
De eigenschap UpdateSourceTrigger behandelt bronupdates en is daarom alleen relevant voor TwoWay of OneWayToSource bindingen. Om TwoWay- en OneWayToSource-bindingen te laten werken, moet het bronobject meldingen geven over wijzigingen van eigenschappen. Raadpleeg de voorbeelden die in dit onderwerp worden genoemd voor meer informatie. Daarnaast kunt u kijken naar Melding voor eigenschapswijziging implementeren.
Zie ook
.NET Desktop feedback