C# · 12月 31, 2021

c# – 在.Net 4.0中.Net 4.5中绑定的延迟属性

如何在.Net 4.0(描述为 here)中实现.Net 4.0中绑定的Delay属性?

我知道我不能继承自BindingBase,因为ProvideValue被密封.

我可以实现MarkupExtension,但这意味着我现在必须从BindingExtension重写所有的属性是否有其他方式?

解决方法 我将创建一个AttachedProperty,指定延迟的时间量.当绑定值更改时,AttachedProperty将启动(或重置)定时器,并在达到指定的时间量时手动更新绑定的源.

您可以使用以下更新源绑定:

BindingOperations.GetBindingExpressionBase( dependencyObject,dependencyProperty).UpdateSource();

编辑

我正在修复一些旧代码中的错误,并注意到它使用附加行为实现了一个延迟的属性更改通知.我想到了这个问题,所以按照我在代码中评论的链接,发现自己在过去的一段时间里已经发布了一个关于delaying a binding左右的问题.最重要的答案是我现在实现的一个问题,在X毫秒之后更新绑定源的属性.