Я пытаюсь реализовать обработчик отложенного события MouseEnter в моем интерфейсе Silverlight.Сделав это «классическим» способом, с DispatcherTimer и т. Д., Я сейчас пытаюсь сделать то же самое с помощью расширений Reactive.Это должно быть более кратким и простым для чтения, но почему-то я не могу достичь цели, а именно:
- , когда мышь входит в какой-либо элемент управления пользовательского интерфейса, необходимо вызвать метод,
- но это должно быть сделано только после определенного промежутка времени, т.е. 1000 мс, в течение которого мышь остается внутри элемента управления
- , поэтому, если мышь покидает элемент управления до этого периода, ничего не должно происходитьвообще, событие должно быть «отменено»
Я просмотрел документацию RX, которая является довольно абстрактной, а примеры такого практического вида довольно несуществующими.Основываясь на некоторых примерах, найденных в Интернете, я придумал что-то вроде этого:
Observable.Throttle(
Observable.FromEventPattern(LanguageSelector, "MouseEnter"), TimeSpan.FromSeconds(2))
.TakeUntil(Observable.FromEventPattern(LanguageSelector, "MouseLeave"))
.ObserveOnDispatcher()
.Subscribe(e =>
{
ShowPopup();
});
Кажется, что он работает нормально, но только один раз.Когда мышь покидает элемент управления, она больше не работает, мое всплывающее окно больше не срабатывает.Есть лучшие идеи о том, как это сделать?
спасибо заранее!