DependencyProperty ValueChanging事件

时间:2011-11-26 04:22:10

标签: c# .net wpf

我正在使用以下代码在DependencyProperty的{​​{1}}发生更改时收到通知:

Value

这很有效且非常简单,但我现在真正需要的是在DependencyPropertyDescriptor propDescriptor = DependencyPropertyDescriptor.FromProperty(property, control.GetType()); propDescriptor.AddValueChanged(control, controlChangedHandler); 的{​​{1}} 即将更改时收到通知。我以为会有DependencyProperty方法,但它似乎不存在。我有什么想法可以创建这个功能?

我需要能够取消更改,触发一些异步后端逻辑,并且如果后端逻辑成功,则只有控件的属性真正才会发生变化。

1 个答案:

答案 0 :(得分:0)

我通过在INotifyPropertyChanged实现中实现包装IODevice并将其绑定到DependencyProperty来解决手头的问题。

事实上,IODeviceWrapper.Value的setter实际上并没有设置值,而是IO。事实证明,当设置者被它所绑定的DependencyProperty调用时,该更改尚未提交给DependencyProperty的值。因此,IODeviceWrapper.Value的setter会被DependencyProperty的sudo-不存在的ValueChanging事件调用。

此时,如果DependencyPropertyValue的getter读取,它将获得旧值,直到IO完成。当IO完成后,IODeviceWrapper.Value的{​​{1}}事件会被触发,然后PropertyChanged会读取新值。

我的有缺陷的设计现在正在完美运作。这是代码,以防其他人感兴趣。忽视反对者。

DependencyProperty