Попробуйте это:
var _allEvents = Observable
.Merge(Items
.Select(item => Observable
.FromEventPattern<PropertyChangedEventArgs>(item, "PropertyChanged")));
_allEvents.Subscribe(evt => Trace.WriteLine(" Property Changed -> " + evt.EventArgs.PropertyName));
Причина, по которой ваш подход не работает, заключается в том, что вы звоните IObservable<T> Observable.Merge<T>(this IObservable<T> first, IObservable<T> second)
. Тип возвращаемого значения это результирующая наблюдаемая. Я думаю, вы могли подумать, что Merge изменил Observable, но вы можете думать о Observable как о неизменных (вроде). Способ получить ваш подход к работе был бы:
_allEvents = _allEvents.Merge(seq);
Но ... тьфу. Не делай этого.