是否在更新WPF绑定源之前触发了任何事件?

时间:2011-07-14 21:26:42

标签: .net wpf binding textbox

使用以下WPF TextBox,在绑定源更新后调用

TextBox_SourceUpdated

是否有在绑定源更新之前触发的事件?

更新

我已经开始在<TextBox Text="{Binding Path=title, NotifyOnSourceUpdated=True}" SourceUpdated="TextBox_SourceUpdated" /> 事件和GetBindingExpression(TextBox.TextProperty).UpdateSource()中调用LostFocus。我对此方法非常不满意,因为我最终不得不:

  • 验证UpdateSourceTrigger=Explicit未断开连接
  • 验证DataContext
  • 验证该值是否完全改变,以
  • 开头

这很痛苦,所以我正在寻找别的东西;更简单的东西。

第二次更新

所以我放弃了。我决定恢复使用SourceUpdated事件(在名称暗示更新源之后触发),并且在任何源更新发生之前始终保留sqlite保存点,允许在更新发生之前始终返回。

2 个答案:

答案 0 :(得分:1)

我认为您无法直接使用Binding事件做任何事情。根据您要实现的目标,TextChanged和PreviewLostKeyboardFocus事件的某些组合可能会满足您的需求。这两个事件都将在SourceUpdated之前发生。 TextChanged事件将在每个键条目上触发,但使用LostFocus的默认UpdateSourceTrigger PLKF将在绑定推送更新和SourceUpdated触发之前触发一次。

答案 1 :(得分:0)

我能想到的模拟这种功能的唯一方法是使用代理属性进行双重绑定。例如:

属性A:{Binding ABProxy,Mode = TwoWay}

属性B:{Binding ABProxy,Mode = TwoWay}

属性ABProxy :(用作代理,绑定源和目标)

然后你可以听A更新它的来源,在 B更新之前做做一些事情,或者监听代理更改等等。

如果您有单向绑定,则可以绑定到代理属性,并在更新后,决定是否将更改传播到属性B.