我正在使用以下代码在DependencyProperty
的{{1}}发生更改时收到通知:
Value
这很有效且非常简单,但我现在真正需要的是在DependencyPropertyDescriptor propDescriptor = DependencyPropertyDescriptor.FromProperty(property, control.GetType());
propDescriptor.AddValueChanged(control, controlChangedHandler);
的{{1}} 即将更改时收到通知。我以为会有DependencyProperty
方法,但它似乎不存在。我有什么想法可以创建这个功能?
我需要能够取消更改,触发一些异步后端逻辑,并且如果后端逻辑成功,则只有控件的属性真正才会发生变化。
答案 0 :(得分:0)
我通过在INotifyPropertyChanged
实现中实现包装IODevice并将其绑定到DependencyProperty
来解决手头的问题。
事实上,IODeviceWrapper.Value
的setter实际上并没有设置值,而是IO。事实证明,当设置者被它所绑定的DependencyProperty
调用时,该更改尚未提交给DependencyProperty
的值。因此,IODeviceWrapper.Value
的setter会被DependencyProperty
的sudo-不存在的ValueChanging
事件调用。
此时,如果DependencyProperty
从Value
的getter读取,它将获得旧值,直到IO完成。当IO完成后,IODeviceWrapper.Value
的{{1}}事件会被触发,然后PropertyChanged
会读取新值。
我的有缺陷的设计现在正在完美运作。这是代码,以防其他人感兴趣。忽视反对者。
DependencyProperty