/// <summary>
        /// Observe collection element's PropertyChanged event.
        /// </summary>
        /// <typeparam name="TCollection">Type of collection</typeparam>
        /// <typeparam name="TElement">Type of element</typeparam>
        /// <param name="source">The source.</param>
        /// <returns>PropertyChanged event stream.</returns>
        /// <exception cref="System.ArgumentNullException">source</exception>
        public static IObservable <SenderEventArgsPair <TElement, PropertyChangedEventArgs> > ObserveElementPropertyChanged <TCollection, TElement>(TCollection source)
            where TCollection : INotifyCollectionChanged, IEnumerable <TElement>
            where TElement : class, INotifyPropertyChanged
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            return(ObserveElementCore <TCollection, TElement, SenderEventArgsPair <TElement, PropertyChangedEventArgs> >
                   (
                       source,
                       (x, observer) => x.PropertyChangedAsObservable().Subscribe(y =>
            {
                var pair = SenderEventArgsPair.Create(x, y);
                observer.OnNext(pair);
            })
                   ));
        }
Example #2
0
 /// <summary>
 /// 内容に変更が発生した
 /// </summary>
 /// <param name="pair"></param>
 private void Changed(SenderEventArgsPair <People, PropertyChangedEventArgs> pair)
 {
     MessageBox.Show("Changed");
 }