在WP8的文本框控件中输入更快

本文关键字:输入 控件 WP8 文本 | 更新日期: 2023-09-27 18:03:44

在我的WP8应用程序中,我使用一种搜索方法,当TexBox中的文本发生变化时进行搜索。现在我需要修改这个搜索。当用户在文本框中快速输入时,搜索应该只在用户输入后执行。也就是说,搜索方法不应该对每次修改的文本执行。这可能吗?

在WP8的文本框控件中输入更快

有可能吗?

绝对。您基本上需要一个计时器——或者更确切地说,每次击键都需要一个计时器。

最简单的方法可能是:

  • 每次用户按一个键,启动一个计时器。计时器应该记住此时已经输入的文本。
  • 当计时器触发时,如果当前文本与"计时器开始时的文本"相同,则执行搜索

一个潜在的缺点是,如果用户键入"foo",计时器启动,用户键入"d",然后删除"d",然后计时器触发,它将执行搜索,尽管键入后的活动。如果您认为这是不需要的,您可以简单地维护一个计数器—只是一个int表示有多少次击键。当计时器启动时,请记住,并检查计时器触发时计数是否与以前相同。

或者,假设搜索是异步且便宜的,每次击键都在上开始搜索…但是,当您得到返回的结果时,要么完全忽略用户在此之后输入的搜索,要么在本地过滤结果,以保留使用新查询文本仍然有效的结果。

(可以用单个计时器来解决这个问题,这样当用户键入时,计时器就会启动其触发时间被延迟。就我个人而言,我认为这更复杂,但这取决于你。

你可以考虑使用响应式扩展库,这是一种异步通信方式,并在异步活动上提供了大量抽象。这是一种基于推送的机制,即只要数据可用,感兴趣的订阅者就会收到通知。它支持取消问题、请求等。有关示例,请参阅101 Rx