如果你的AllTags
將包含成千上萬的元素 - 我想這將是低效的。另外,在鍵盤上每敲擊一次,TextChanged
事件可能會啓動,並且數據重新加載非常頻繁,這可能會減慢您的應用程序。 在這種情況下查看Reactive Extensions是個好主意。使用Rx,用戶輸入速度非常快,並且可以輕鬆延遲數據刷新,例如。 Where
結果的前20個元素。
var searchObservable = Observable.FromEventPattern(s => box.TextChanged += s, s => box.TextChanged -= s)
.Throttle(TimeSpan.FromMilliseconds(400))
.Select(result =>
{
var textBox = result.Sender as AutoSuggestBox;
return textBox.Text;
}
);
searchObservable
.DistinctUntilChanged()
.ObserveOnDispatcher()
.Subscribe(searchString =>
{
//Select elements from 'AllTags' here, this code will be launched with 400ms delay (throttle) when user is typing fast.
}
請注意,這個例子非常一般,但您可以基於它。
乍一看,Rx看起來很困難,但有很多關於它的topics和tutorials。