0

我在 Silverlight 应用程序中有一个方法。我想在事件发生时(鼠标移动)开始调用此方法,并继续每 1 秒调用一次此方法,直到一个简单的布尔条件发生变化。这可能吗 ?我不知道如何让 rx 从单个事件中生成多个“事件”

4

1 回答 1

2

这是我用来执行此操作的方法:

var isChecked = from f in Observable.FromEvent<RoutedEventHandler, RoutedEventArgs>(
                    h => new RoutedEventHandler(h),
                    h => checkBox1.Checked += h,
                    h => checkBox1.Checked -= h)
                where checkBox1.IsChecked == true
                select new Unit();

var xs = from click in Observable.FromEvent<RoutedEventHandler, RoutedEventArgs>(
             h => new RoutedEventHandler(h),
             h => button1.Click += h,
             h => button1.Click -= h)
         from ping in Observable.Interval(TimeSpan.FromSeconds(1.0)).TakeUntil(isChecked)
         select ping;

_subscription = xs.ObserveOnDispatcher().Subscribe(v => label1.Content = v.ToString());

我创建了一个按钮来开始点击事件。我创建了一个复选框,当它被选中时将停止事件。这可能不是您想要的,但事件会按照您的要求触发,您应该能够从这里进行修改以适应。

于 2010-03-29T11:35:49.983 回答