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