2010-03-29 25 views
0

我在Silverlight應用程序中有一個方法。我想在發生事件(鼠標移動)時開始調用此方法,並繼續每1秒調用一次該方法,直到一個簡單的布爾條件發生變化。這可能嗎 ?我不能工作了如何讓RX產生從單個事件在silverlight中使用.net反應生成多個事件

回答

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()); 

我創建了一個按鈕,開始事件點擊。我創建了一個複選框,可以在檢查時停止事件。這可能不是你想要的,但事件隨着你的要求而開始,你應該能夠從這裏進行修改。