Gewusst wie: Steuern, wann der TextBox-Text die Quelle aktualisiert
Aktualisiert: November 2007
In diesem Thema wird beschrieben, wie die UpdateSourceTrigger-Eigenschaft verwendet wird, um Aktualisierungen von Bindungsquellen zeitlich zu steuern. In diesem Thema wird das TextBox-Steuerelement als Beispiel verwendet.
Beispiel
Der UpdateSourceTrigger-Standardwert der TextBox.Text-Eigenschaft ist LostFocus. Wenn eine Anwendung also ein TextBox-Element mit einer datengebundenen TextBox.Text-Eigenschaft besitzt, wird beim Eingeben von Text in das TextBox-Element die Quelle erst dann mit diesem Text aktualisiert, wenn das TextBox-Element den Fokus verliert (wenn Sie beispielsweise außerhalb des TextBox-Elements klicken).
Wenn Sie möchten, dass die Quelle aktualisiert wird, während Sie den Text eingeben, legen Sie den UpdateSourceTrigger der Bindung auf PropertyChanged fest. Im folgenden Beispiel werden die Text-Eigenschaften des TextBox-Elements und des TextBlock-Elements an die gleiche Quelleneigenschaft gebunden. Die UpdateSourceTrigger-Eigenschaft der TextBox-Bindung ist auf PropertyChanged festgelegt.
<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}"/>
Dadurch zeigt das TextBlock-Element (aufgrund der Änderungen in der Quelle) den gleichen Text an, den der Benutzer in das TextBox-Element eingibt. Dies wird durch die folgende Bildschirmabbildung des Beispiels veranschaulicht:
Das vollständige Beispiel finden Sie unter Beispiel zu einfachen Bindungen.
Wenn Sie mit einem Dialogfeld oder einem vom Benutzer bearbeitbaren Formular arbeiten und Sie die Aktualisierungen der Quelle auf den Zeitpunkt verschieben möchten, zu dem der Benutzer die Bearbeitung der Felder abgeschlossen und auf "OK" geklickt hat, können Sie den UpdateSourceTrigger-Wert Ihrer Bindungen auf Explicit festlegen, wie in dem folgenden Beispiel gezeigt:
<TextBox Name="itemNameTextBox"
Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />
Wenn Sie den UpdateSourceTrigger-Wert auf Explicit festlegen, ändert sich der Quellwert nur dann, wenn die Anwendung die UpdateSource-Methode aufruft. Im folgenden Beispiel wird veranschaulicht, wie UpdateSource für itemNameTextBox aufgerufen wird:
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();
Das vollständige Beispiel finden Sie unter Beispiel zum expliziten Aktualisieren der Bindungsquelle.
Tipp
Sie können das gleiche Verfahren für Eigenschaften anderer Steuerelemente verwenden. Denken Sie jedoch daran, dass die meisten anderen Eigenschaften einen UpdateSourceTrigger-Standardwert von PropertyChanged haben. Weitere Informationen finden Sie auf der Eigenschaftenseite für UpdateSourceTrigger.
Tipp
Die UpdateSourceTrigger-Eigenschaft behandelt Quellupdates und ist deshalb nur für die TwoWay-Bindung oder die OneWay-Bindung relevant. Damit die TwoWay-Bindung und die OneWay-Bindung funktionieren, muss das Quellobjekt Benachrichtigungen für Eigenschaftenänderungen bereitstellen. Weitere Informationen finden Sie in den Beispielen in diesem Thema. Zusätzliche Informationen können Sie auch dem Dokument Gewusst wie: Implementieren von Benachrichtigungen bei Eigenschaftenänderungen entnehmen.