【发布时间】:2012-02-22 05:41:07
【问题描述】:
我收集了 INotifyPropertyChanged 对象,并希望将所有 PropertyChanged 事件流式传输到单个可观察序列中以供进一步处理。
这是一个代码
IObservable<EventPattern<PropertyChangedEventArgs>> _allEvents = null;
// Items contains collection of item, which implements INotifyPropertyChanged
foreach (var item in Items)
{
var seq = Observable.FromEventPattern<PropertyChangedEventArgs>(item, "PropertyChanged");
if (_allEvents == null)
_allEvents = seq;
else
_allEvents.Merge(seq);
}
// subscribe to the aggregated observable sequence
if (_allEvents != null)
_allEvents.Subscribe(evt => Trace.WriteLine(" Property Changed -> " + evt.EventArgs.PropertyName));
由于某种原因,单个订阅在聚合序列中不起作用。 看起来我聚合(使用 Reactive Extensions 的 Merge 功能)不正确。但是,在循环内订阅效果很好。
谁能在这里帮助我,如何通过响应式扩展将多个事件流聚合成一个?
谢谢
【问题讨论】:
标签: system.reactive reactive-programming reactiveui