<TextBlock Name="txtName" Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" />
"Name"是一个对象的属性,在运行时与TextBlock绑定。我已经实现了INotifyPropertyChanged,所以代码可以正常工作。我的问题是:如果我将PropertyChanged替换为Default,它还能正常工作吗?它们之间有什么区别?
UpdateSourceTrigger
对于大多数属性来说默认值是PropertyChanged
,而对于TextBox.Text
属性来说则是LostFocus
。PropertyChanged
默认值的属性,所以您不会看到任何差异。PropertyChanged
是告诉 Binding
,每当该属性接收到 PropertyChanged
通知时,在目标上更新它的值。
对于某些控件,如 TextBox
,使用 Default
,只有在失去焦点时才更新绑定目标。当您在其上设置 UpdateTrigger = 'PropertyChanged'
时,会在您输入时更新绑定目标。
关于文本框控件 当我们使用UpdateSourceTrigger=Default时,意味着当源对象失去焦点时,目标中的值将被更新。 当我们使用UpdateSourcetrigger=PropertyChanged时,意味着当源对象文本发生更改(即使我们只输入一个字符),立即反映在目标中。 上述情况适用于文本框控件,因为大多数控件的默认值都是PropertyChanged。