MSDN 文档指出:
TwoWay 或 OneWayToSource 的绑定侦听目标属性中的更改并将它们传播回源。这称为更新源。通常,只要目标属性更改,就会发生这些更新。这适用于复选框和其他简单控件,但通常不适用于文本字段。每次击键后更新可能会降低性能,并且它会剥夺用户在提交新值之前退格和修复打字错误的通常机会。因此,Text 属性的默认 UpdateSourceTrigger 值是 LostFocus 而不是 PropertyChanged。
我了解,在更新直接进入数据库或通过网络,或者数据量非常大的情况下,在 TextBoxes 上使用 UpdateSourceTrigger = PropertyChanged 确实会降低性能。
但是,如果它只是更新一个简单的 DependencyProperty,或者一个实体框架对象的属性(在提交之前),那么性能损失是否可以忽略不计?
只是想知道,因为我正在创建一个 WPF 应用程序,它跟踪正在编辑的对象的状态,并根据是否进行了更改来优化“保存”按钮的外观。我认为确定更改的最简单方法是酌情捕获相关的 SourceUpdated 事件。当文本框的 UpdateSourceTrigger = PropertyChanged 时,它的工作效果最佳,因为用户会立即获得“可保存”更改的反馈。