在我的WP8应用程序中,我使用的搜索方法在TexBox中的文本发生变化时进行搜索。现在我需要修改此搜索。当用户在TextBox中快速键入时,搜索应该仅在用户键入后执行。那就是搜索方法不应该为每个文本更改执行。可能吗?请帮助我
答案 0 :(得分:3)
有可能吗?
绝对。你基本上需要一个计时器 - 或者更确切地说,每个击键都需要一个计时器。
这样做的最简单方法可能是:
一个潜在的缺点是,如果用户键入“foo”,计时器启动,用户键入“d”然后删除“d”,然后定时器触发,它尽管有打字后的活动,它仍将执行搜索。 如果你认为这是不受欢迎的,你可以简单地维护一个计数器 - 只需int
说明有多少次击键。在计时器启动时记住那个,并检查计时器何时触发计数是否与它相同。
或者,假设搜索是异步且便宜的,请在每次击键时开始搜索...但是当您得到结果时,如果用户从那时开始输入,则要么完全忽略搜索,或者将结果本地过滤到那些对新查询文本仍然有效的结果。
(可以使用单个计时器来解决问题,这样当用户输入时 启动计时器或它的开火时间延迟了。我个人认为我会发现它更复杂,但这取决于你。)
答案 1 :(得分:0)
您可以考虑使用Reactive extension库,这是异步的通信方式,并提供了大量异步活动的抽象。它是一种基于推送的机制,即只要数据可用,就会通知感兴趣的订户。它支持取消问题请求等。例如,请参阅101 Rx