如何:控制文本框文本更新源的时间

it2022-05-09  18

引用: http://msdn.microsoft.com/zh-cn/library/ms754356.aspx  

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上百实例源码以及开源项目

最新回复(0)