public static class NotificationExtensions { /// /// Subscribe to PropertyChange notifications for the given property. /// /// /// Implementer of that the events are going to be coming from. /// /// /// Lambda expression pointing to the property that you want to receive change notifications for. /// /// /// Event handler of the PropertyChange notifications. /// public static void SubscribeToChanges( this T notifier, Expression> propertyExpression, PropertyChangedEventHandler handler) where T : INotifyPropertyChanged { MemberExpression memberExpression; var unaryExpression = propertyExpression.Body as UnaryExpression; if (unaryExpression != null) { memberExpression = (MemberExpression)unaryExpression.Operand; } else { memberExpression = (MemberExpression)propertyExpression.Body; } var propertyInfo = (PropertyInfo)memberExpression.Member; string propertyName = propertyInfo.Name; notifier.PropertyChanged += (s, e) => { if (e.PropertyName.Equals(propertyName) || string.IsNullOrEmpty(e.PropertyName)) { handler(s, e); } }; } }