有人建议我应该使用Rx去除AutoCompleteBox的输入,其中建议列表来自Web服务。显然,我不想对每次键击的更新运行缓慢的查询,但另一方面,在用户暂停后你也不需要太长的延迟。
我这样做了
public partial class MainPage : PhoneApplicationPage
{
Timer _timerName;
public MainPage()
{
InitializeComponent();
_timerName = new Timer(QueryForNameSuggestions);
}
void QueryForNameSuggestions(object state)
{
//
}
private void searchtermName_TextChanged(object sender, RoutedEventArgs e)
{
//Each keystroke resets the timer, 500ms after you stop typing it queries
_timerName.Change(500, Timeout.Infinite);
}
}
这很容易理解,效果很好;每次击键(重新)开始半秒等待在查询中达到高潮。
我真的不知道如何用Rx做同样的事情,但我愿意接受这将是一个改进的可能性。有人能告诉我如何使用Rx完成这项工作,并解释一下Rx方式有什么好处?
Rx: How can I respond immediately, and throttle subsequent requests似乎很接近,但我没有看到你如何检测传入的击键而没有轮询AutoCompleteBox的值,这对我来说似乎不是一个改进。