public static IObservable <T> AsObservable <T>(this INotifyPropertyChanged propertyHolder, Expression <Func <T> > propertyExpression)
        {
            var property = propertyExpression.Compile();
            IConnectableObservable <T> observable = propertyHolder.AsObservablePropertyChanged()
                                                    .Where(p => p.EventArgs.PropertyName == PropertyHelper.GetPropertyName(propertyExpression))
                                                    .Select(x => property())
                                                    .Publish(property());

            observable.Connect();
            return(observable);
        }