TextBox.Text 属性的默认 UpdateSourceTrigger 值为 LostFocus。这意味着如果应用程序的 TextBox 包含数据绑定 TextBox.Text 属性,则直到 TextBox 失去焦点(例如,将鼠标移到 TextBox 外单击时),键入到 TextBox 中的文本才能更新源。
如果希望在键入过程中更新源,请将该绑定的 UpdateSourceTrigger 设置为 PropertyChanged。在下面的示例中,TextBox 和 TextBlock 的 Text 属性都绑定到同一源属性。将 TextBox 绑定的 UpdateSourceTrigger 属性设置为 PropertyChanged。
复制代码 <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}"/>因此,TextBlock 所显示的文本将与用户输入到 TextBox 中的文本相同(因为源发生更改),如该示例的以下屏幕快照所示:
有关完整示例,请参见简单绑定示例。
如果您具有一个对话框或用户可编辑的窗体,并且希望将源更新延迟到用户完成字段编辑并单击“确定”之后,则可以将绑定的 UpdateSourceTrigger 值设置为 Explicit,如下面的示例所示:
复制代码 <TextBox Name="itemNameTextBox" Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />如果将 UpdateSourceTrigger 值设置为 Explicit,则仅当应用程序调用 UpdateSource 方法时,该源值才会发生更改。下面的示例演示如何为 itemNameTextBox 调用 UpdateSource:
C# 复制代码 // itemNameTextBox is an instance of a TextBox BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty); be.UpdateSource(); Visual Basic 复制代码 Me.itemNameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource() Me.bidPriceTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()有关完整示例,请参见显式更新绑定源的示例。
说明:此方法可用于其他控件的属性,但请记住,其他大多数属性的默认 UpdateSourceTrigger 值为 PropertyChanged。有关更多信息,请参见 UpdateSourceTrigger 属性页。
转载于:https://www.cnblogs.com/coogle/archive/2008/08/25/1275598.html
相关资源:JAVA上百实例源码以及开源项目