WPF控制 TextBox 文本何时更新源

本主题介绍如何使用UpdateSourceTrigger属性来控制绑定源更新的时间。本主题使用TextBox控件作为示例。

TextBox.Text 属性的默认 UpdateSourceTrigger 值为 LostFocus。这意味着,如果应用程序具有具有数据绑定 TextBox.Text 属性的 TextBox,则在 TextBox 中键入的文本不会更新源,直到 TextBox 失去焦点(例如,当您单击离开 TextBox 时)。

如果要在键入时更新源,请将绑定的 UpdateSourceTrigger 设置为 PropertyChanged。在下面的示例中,突出显示的代码行显示 TextBox 和 TextBlock 的属性绑定到同一个源属性。TextBox 绑定的 UpdateSourceTrigger 属性设置为 PropertyChanged

  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">

 
   
     
        Joe
     

   

   
   
   
 

 
   
      <标签>输入名称:  

      <标签>输入的名称:
   
 

因此,TextBlock 显示与用户在 TextBox 中输入文本时相同的文本(因为源已更改),如以下示例的以下屏幕截图所示:

WPF控制 TextBox 文本何时更新源_第1张图片

如果您有一个对话框或用户可编辑的窗体,并且想要推迟源更新,直到用户完成对字段的编辑并单击“确定”,则可以将绑定的 UpdateSourceTrigger 值设置为 Explicit,如以下示例所示:

XAML复制
<TextBox Name="itemNameTextBox"
         Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />

将 UpdateSourceTrigger 值设置为 Explicit 时,源值仅在应用程序调用 UpdateSource 方法时更改。以下示例演示如何为 调用 UpdateSource:itemNameTextBox

C#复制
// itemNameTextBox is an instance of a TextBox
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();

 注意

可以对其他控件的属性使用相同的方法,但请记住,大多数其他属性的默认 UpdateSourceTrigger 值为 PropertyChanged。有关更多信息,请参见 UpdateSourceTrigger 属性页。

 注意

UpdateSourceTrigger 属性处理源更新,因此仅与 TwoWay 或 OneWayToSource 绑定相关。若要使 TwoWay 和 OneWayToSource 绑定正常工作,源对象需要提供属性更改通知。有关详细信息,请参阅本主题中引用的示例。此外,还可以查看实现属性更改通知。

你可能感兴趣的:(ui,wpf,数据更新)