【发布时间】:2011-08-23 19:47:40
【问题描述】:
考虑以下情况: 有组合框和过滤器文本框,然后用户在文本框中键入文本组合框项目源使用过滤器文本更新。一切正常,但过滤会发生在每个键入的字母上。我想在过滤发生之前添加延迟(用户键入时不应用过滤器)。最简单的方法是什么?
【问题讨论】:
-
我不记得这一分钟确切的计时器类,所以不写答案。但是在您的视图模型中(如果您正在执行 MVVM),您可以让数据更新启动计时器,而不是直接应用于组合框。确保将其设置为仅触发一次,并在每次输入数据时重置。例如,将其设置为 500 毫秒。然后它只会在用户暂停输入后 500 毫秒更新。我在自定义文件系统目录选择器自动完成文本框控件(ala 运行提示符)上使用了这种方法。它运行良好,并且很容易消除错误。
-
@Merlyn 谢谢你,我也会试试这个方法。
-
我相信这与接受的答案或多或少相同。希望对你有效。干杯!
-
@Merlyn 实际上在测试了我发现的两种方法之后,你的方法更方便,因为它不需要 'TimeSinceType' 变量和 '*_TextChanged' 方法中的额外检查。
-
哦,我明白了。我将在今天晚些时候将此添加为答案。我有点作弊,因为他的回答让我想起了要使用的计时器类;)
标签: c# wpf asynchronous filter