2011-05-10 16 views
5

Laboratuarda reaktif uzatma elleriyle çalmaya çalışıyorum ancak FromEvent API'sini kullanarak kayıt yapılamadım (derleme zamanı istisnası alıyorum). Textchanged özelliği metin kutusu denetiminde çağrıldığında olayları almak istiyorum, birisi FromEvent API aracılığıyla dönüştürme konusunda yanlış yaptığım şeyi önerebilir mi? Bazıları nasıl cast yazamaz veya TextChangeEventArgs/EventHandler'dan EventHandler'a dönüşemez - lütfen bana bunu yapmanın doğru yolunu göster. Teşekkürler.Reaktif Uzantısı - Gözlemlenebilir.FromEvent typecast conversion

 internal delegate void TextChangedEventArgs(object sender, EventArgs e); 
     var txt = new TextBox(); 

     var form = new Form 
         { 
          Controls = { txt } 
         }; 


     var subscription = Observable.FromEvent<EventHandler, TextChangedEventArgs>(
      x => (a, b) => new EventHandler(), ?????? 
      x => txt.TextChanged += x, 
      x => txt.TextChanged -= x 
      ); 

     IDisposable eventSubscription = subscription.Subscribe(
      x => Console.WriteLine("Subscriber Got " + x), 
      x => Console.WriteLine("An exception has occured" + x), 
      () => Console.WriteLine("Action completed")); 

     Console.WriteLine("in here"); 
     using (new CompositeDisposable(eventSubscription)) { Application.Run(form); } 

     Console.ReadKey(); 

cevap

11

bu deneyin:

var subscription = Observable.FromEventPattern<TextChangedEventArgs>(txt, "TextChanged"); 
+0

olarak yeniden adlandırıldı Çözümüm MSDN belgeli 'Microsoft.Phone.Reactive' ad alanında bulundu. RX-Takımı, bu gibi şeyleri sık sık API'larında değiştiriyor gibi görünüyor. İpucu için teşekkürler. – Nappy

3

Dene:

var subscription = Observable.FromEvent(h => txt.TextChanged += h, 
             h => txt.TextChanged -= h); 
+0

Konsol tabanlı bir uygulama kullanıyorum ve Windows.Form dll/namespace kullanarak, TextChangedEventHandler bir WPF Sunum temsilcisidir, bunu winform ile yapabileceğim bir yol var mı? –

+0

@Rohit Sharma - bir winforms için değiştirilmiş örneğim bkz. TextBox –

+2

Teşekkürler James - Bunu daha önce denedim ama derleme zamanı hatası alıyorum "System.EventHandler türüne dolaylı olarak System.Action dönüştürülemiyor" –

0

bu (düzenlemeyi: Eğer Windows Phone Reactive API hedefliyorsanız): Deneyin

var subscription = Observable.FromEvent<TextChangedEventArgs>(txt, "TextChanged"); 
+1

En son RX kütüphanesinde bu aşırı yüklemeyi görmedim geçen Cuma indirildi –

+3

FromEventPattern – Schneider