MSDN文档说明:
双向或单向到源的绑定会监听目标属性的更改并将其传播回源。这被称为更新源。通常,这些更新发生在目标属性更改时。对于复选框和其他简单控件来说,这很好,但对于文本字段来说通常不合适。每次按键后更新会降低性能,并且会使用户无法在提交新值之前使用退格键和纠正输入错误。因此,Text属性的默认UpdateSourceTrigger值是LostFocus而不是PropertyChanged。
我理解,在直接更新数据库或跨网络进行更新,或者数据量非常大的情况下,对于TextBoxes使用UpdateSourceTrigger = PropertyChanged确实会降低性能。
但是,如果只是更新一个简单的DependencyProperty或Entity Framework对象的属性(在提交之前),那么性能影响是否可以忽略不计?
我只是想知道,因为我正在创建一个WPF应用程序,该应用程序跟踪正在编辑的对象的状态,并根据是否已进行更改来优化保存按钮的外观。我认为捕捉相应的SourceUpdated事件是确定更改的最简单方法。当对于文本框使用UpdateSourceTrigger = PropertyChanged时,它可以实现最佳效果,因为用户可以立即得到有“可保存”更改的反馈。
双向或单向到源的绑定会监听目标属性的更改并将其传播回源。这被称为更新源。通常,这些更新发生在目标属性更改时。对于复选框和其他简单控件来说,这很好,但对于文本字段来说通常不合适。每次按键后更新会降低性能,并且会使用户无法在提交新值之前使用退格键和纠正输入错误。因此,Text属性的默认UpdateSourceTrigger值是LostFocus而不是PropertyChanged。
我理解,在直接更新数据库或跨网络进行更新,或者数据量非常大的情况下,对于TextBoxes使用UpdateSourceTrigger = PropertyChanged确实会降低性能。
但是,如果只是更新一个简单的DependencyProperty或Entity Framework对象的属性(在提交之前),那么性能影响是否可以忽略不计?
我只是想知道,因为我正在创建一个WPF应用程序,该应用程序跟踪正在编辑的对象的状态,并根据是否已进行更改来优化保存按钮的外观。我认为捕捉相应的SourceUpdated事件是确定更改的最简单方法。当对于文本框使用UpdateSourceTrigger = PropertyChanged时,它可以实现最佳效果,因为用户可以立即得到有“可保存”更改的反馈。