Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här avsnittet beskriver hur du använder UpdateSourceTrigger egenskapen för att styra tidpunkten för bindning av källuppdateringar. I avsnittet används TextBox kontrollen som ett exempel.
Exempel
Egenskapen TextBox.Text har standardvärdet UpdateSourceTriggerLostFocus. Det innebär att om ett program har en TextBox med en databunden TextBox.Text egenskap uppdaterar inte texten du skriver i TextBox källan förrän TextBox fokus förloras (till exempel när du klickar bort från TextBox).
Om du vill att källan ska uppdateras när du skriver, anger du UpdateSourceTrigger för bindningen till PropertyChanged. I följande exempel visar de markerade kodraderna att Text egenskaperna för både TextBox och TextBlock är bundna till samma källegenskap. Egenskapen UpdateSourceTrigger för bindningen TextBox är inställd på 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>
Därför TextBlock visas samma text (eftersom källan ändras) när användaren anger text i TextBox, vilket illustreras av följande skärmbild av exemplet:
Om du har en dialogruta eller ett användarredigerbart formulär och vill skjuta upp källuppdateringar tills användaren har redigerat fälten och klickar på "OK" kan du ange UpdateSourceTrigger värdet för dina bindningar till Explicit, som i följande exempel:
<TextBox Name="itemNameTextBox"
Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />
När du anger värdet UpdateSourceTrigger till Explicitändras endast källvärdet när programmet anropar UpdateSource metoden. I följande exempel visas hur du anropar UpdateSource för 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()
Anmärkning
Du kan använda samma teknik för egenskaper för andra kontroller, men tänk på att de flesta andra egenskaper har standardvärdet UpdateSourceTriggerPropertyChanged. Mer information finns på egenskapssidan UpdateSourceTrigger .
Anmärkning
Egenskapen UpdateSourceTrigger hanterar källuppdateringar och är därför endast relevant för TwoWay eller OneWayToSource bindningar. För att TwoWay- och OneWayToSource-bindningar ska fungera måste källobjektet tillhandahålla meddelanden om ändringar av egenskaper. Mer information finns i exemplen som nämns i det här avsnittet. Dessutom kan du titta på Implementera egenskapsändringsmeddelande.
Se även
.NET Desktop feedback