当前位置:  开发笔记 > 编程语言 > 正文

如何将更新推迟到WPF中的绑定

如何解决《如何将更新推迟到WPF中的绑定》经验,为你挑选了2个好方法。

是否有一种简单的方法可以告诉双向WPF数据绑定在最后一次更改后等待几毫秒,然后使用新属性值更新Source?

我正在为ListBox实现一个过滤器功能,我有一个文本框,我想根据我输入的内容过滤ListBox的内容.我正在使用数据绑定将各个部分连接起来.过滤列表可能非常耗时,所以我不希望在键入的每个字符之后执行此操作:因此我的请求.

我一直在使用Paul Stovell的DelayBinding Extension(他的网站现在已经关闭了,所以我无法链接到它).但是,我怀疑它是我的应用程序中的内存泄漏的原因(由于它没有删除事件处理程序).

还有其他人有其他想法吗?



1> João Portela..:

我也迟到了几年,但是如果你使用的是WPF 4.5+ ,现在有一个属于这个目的的属性,它被称为Delay.

描述

更新绑定源之前等待的时间(以毫秒为单位).

用法示例




2> Fredrik Hedb..:

这里的问题有点晚了(仅仅几年:)但是对于任何有兴趣的人我在项目中有类似的要求所以我创建了两个标记扩展名为DelayBindingExtensionDelayMultiBindingExtension.

它们可以正常工作Bindings,您可以指定添加UpdateSourceDelay和/或UpdateTargetDelay两者都是TimeSpan属性.此外,我已经验证它是无泄漏的(它通过继承上下文而不是使用依赖属性绑定的propertychanged回调DependencyPropertyDescriptor).

用法的示例用法 DelayBinding


对于一个 DelayMultiBinding


    
        
        
        
    

源代码和样本使用情况DelayBinding,并DelayMultiBinding可以下载在这里.
如果您对实现细节感兴趣,可以在这里查看我的博客文章:具有源和目标延迟的DelayBinding和DelayMultiBinding

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有