Используйте .net реактивный в Silverlight для генерации нескольких событий - PullRequest
0 голосов
/ 29 марта 2010

У меня есть метод в приложении Silverlight. Я хочу начать вызывать этот метод, когда происходит событие (движение мыши), и продолжать вызывать этот метод каждую 1 секунду, пока не изменится простое логическое условие. Это возможно ? Я не могу понять, как заставить rx генерировать несколько «событий» из одного события

1 Ответ

2 голосов
/ 29 марта 2010

Вот метод, который я использовал для этого:

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

Я создал кнопку, чтобы начать события по клику. Я создал флажок, который будет останавливать события, когда он установлен. Это может быть не совсем то, что вы хотите, но события запускаются, как вы и просили, и вы сможете вносить изменения в соответствии с требованиями.

...