Мне пришлось немного подправить код, чтобы он работал в приложении LightSwitch (SilverLight 4) с Rx v1.0.10621 из-за некоторых изменений интерфейса в Rx с тех пор, как был задан этот вопрос.
Нужно установить Rx и ссылаться на сборки System.Reactive
и System.Reactive.Windows.Threading
(для LightSwitch эта ссылка находится в проекте Client
).
Затем используйте этот код для регулирования TextChange
событие в текстовом поле:
(Примечание: для светового переключателя этот код входит в обработчик ControlAvailable
)
var textChangedEvent = Observable
.FromEventPattern<TextChangedEventArgs>(e.Control, "TextChanged")
.Throttle(TimeSpan.FromMilliseconds(500))
.ObserveOnDispatcher();
textChangedEvent.Subscribe(changed =>
{
var tb = changed.Sender as TextBox;
if (tb.Text.Length >= 3) // don't search for keywords shorter than 3 chars
{
// search
}
});